sp_who2中"暂停"和高磁盘IO的状态是什么意思?

Nul*_*nce 54 sql-server

我正在尝试解决我们的应用程序中的一些间歇性减速问题.我在这里有一个单独的问题,有更多细节.

我运行了sp_who2并且我注意到一些状态为SUSPENDED和高DiskIO的连接.有人可以向我解释这表明什么吗?

在此输入图像描述

Seb*_*ine 59

这是一个非常广泛的问题,所以我将给出一个广泛的答案.

  1. 当请求访问当前不可用的资源时,查询将被挂起.这可以是逻辑资源,如锁定行或物理资源,如内存数据页.一旦资源可用,查询就会再次开始运行. 
  2. 高磁盘IO意味着需要访问许多数据页来满足请求.

这就是我从上面的截图中可以看到的一切.但是,如果我推测,你可能有一个IO子系统太慢,无法满足需求.这可能是由缺少索引或实际上太慢的磁盘引起的.请记住,单个OLTP查询的15000次读取略高但并不罕见.

  • 如果原因是锁定,那么不应该出现在`BlkBy`或`blocking_session_id`中? (3认同)
  • 正确,@JonofAllTrades。如果进程 A 试图访问被进程 B 锁定的资源,则 B 的会话 ID 将显示在 A 的 blocks_process_id 列中。 (2认同)

mr_*_*air 20

暂停.会话正在等待事件(例如I/O)完成.

http://msdn.microsoft.com/en-us/library/ms174313.aspx

  • 转换为数据库所在的磁盘正在大量使用(由数据库本身或服务器上的其他软件),并且数据库必须排队等待轮到他们访问驱动器. (4认同)