2009-08-25 68 views
9

什么会导致Management Studio中的查询被挂起?SQL Activity Monitor中的挂起状态

  1. 我从一个表(它有1100万行)执行一个简单的选择顶部60000,并且结果在一秒或两秒内返回。
  2. 我将查询更改为最高70000,结果最多需要40分钟。

通过在另一个相关问题上进行一些搜索,我发现有人使用DBCC FREEPROCCACHE来修复它。

  1. 我运行DBCC FREEPROCCACHE,然后重做查询70000,它似乎工作。

然而,问题仍然有不同的查询时发生。

  1. 我增加到90000,或者如果我尝试使用[Right-> Open Table]打开表格,它会拉动大约8000条记录并停止。

检查我在执行打开表时的活动日志显示会话已被挂起,等待类型为“Async_Network_IO”。对于运行选择90000的会话,状态为“睡眠”,这与上面选择的70000查询的状态相同,但它在45分钟内返回。我很奇怪状态显示“Sleeping”,并且它似乎没有改变为“Runable”(我的活动监视器刷新了30秒)。

其他注意事项:

  • 我不是同时运行打开表,并在同一时间选择90000。所有查询都一次完成一个。
  • 我正在运行32位SQL Server 2005 SP2 CU9。我尝试升级到SP3,但遇到安装失败。在我尝试升级之前发生了这些问题。
  • 服务器设置是主动/主动集群问题发生在任一节点上,而另一个实例没有此问题。
  • 我有〜20其他数据库在同一服务器上的实例,但只有这一个数据库正在看到这个问题。
  • 该数据库变得相当大。目前在76756.19MB。数据文件是11513MB。
  • 我使用远程桌面在服务器上本地登录。

回答

9

等待类型“Async_Network_IO”意味着它等待客户端检索结果集,因为SQL Server的网络缓冲区已满。为什么你的客户没有及时收集数据我不能说。

它可能发生的另一种情况是与链接服务器当SQL Server查询远程表,在这种情况下,SQL Server正在等待远程服务器响应。

东西值得看的是病毒扫描程序,如果他们被监控的网络连接有时他们可以得到滞后,其经常被他们占用所有的CPU明显。

2

暂停表示它正在等待某个资源,并在获取其资源时恢复。从你回退的大小来看,你似乎处于OLAP类型的查询中。

尝试以下操作:

  1. 使用NOLOCK或查询的顶部设置的事务隔离级别
  2. 检查你的执行计划和调整查询更有效率
相关问题