合理的SQL超时

本文关键字:超时 SQL | 更新日期: 2023-09-27 18:13:42

当您对数据库执行查询时,什么是明智的超时策略?通常我只是保留默认值,但想知道是否有一个明智的经验法则?DBA通常希望看到什么?

合理的SQL超时

这是其中一个"视情况而定"的答案。在默认设置下,对数百万行数据的查询会超时,这是非常昂贵的。

我使用的策略是将其设置为0(换句话说,no timeout),然后使用SQL Profiler(运行跟踪)来获取持续时间。我将它乘以1.15来给我自己一个15%的缓冲区,这样我就不会因为系统延迟或只是"缓慢"的执行而超时。但是在我看来,如果115%的时间在测试时已经过去了,并且没有完成,那么10次中有9次会出现问题,并且会超时。

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

对于非报表查询,我们通常只允许30秒,对于报表服务器,我们只允许3秒。

如果您正在使用SqlCommand和SqlConnection类连接到SQL Server,那么您需要考虑两个超时:

SqlConnection。ConnectionTimeout

连接到数据库所需的时间,默认为30秒,在我看来太长了。我们把它缩短到5秒。

SqlCommand。CommandTimeout

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