合理的SQL超时

时间:2011-11-06 17:45:36

标签: c# sql

当您对数据库执行查询时,什么是合理的超时策略。通常我只是保留默认值,但想知道是否有合理的经验法则? DBA通常喜欢看什么?

3 个答案:

答案 0 :(得分:2)

我认为这实际上取决于你在做什么。如果我们谈论报告,那么你可能需要比你做简单的选择/插入/删除时更高的超时。

我们通常只允许非报告查询30秒,报告服务器3米。

答案 1 :(得分:1)

如果使用SqlCommand和SqlConnection类连接到SQL Server,则需要考虑两个超时:

SqlConnection.ConnectionTimeout

连接数据库所需的时间,默认为30秒,在我看来太长了。我们将其减少到5秒。

并且

SqlCommand.CommandTimeout

这显然取决于您正在运行的查询。

答案 2 :(得分:1)

这是其中一个“它取决于”的答案。数百万行数据上有很多昂贵的查询,使用默认设置超时。

我使用的策略是将其设置为0(换句话说,无超时),然后使用SQL事件探查器(运行跟踪)来获取持续时间。我多次1.15给自己一个15%的缓冲区,这样我就不会因为系统延迟或只是“慢”执行而超时。但在我看来,如果115%的时间已经过了测试但没有完成,那么10次中有9次出错并且超时是有序的。