【问题标题】:What does a Status of "Suspended" and high DiskIO means from sp_who2?sp_who2 的“暂停”状态和高 DiskIO 意味着什么?
【发布时间】:2013-07-22 22:26:51
【问题描述】:

我正在尝试解决我们的应用程序中的一些间歇性减速问题。我有一个单独的问题here 有更多详细信息。

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

【问题讨论】:

标签: sql-server


【解决方案1】:

运行 sp_who2 查找挂起的 spid

然后右键单击服务器名称并打开“活动监视器”

在“进程”部分的“活动监视器”中,在“阻止者”列中查找该 spid

这会告诉你哪个进程阻止你的暂停进程运行

【讨论】:

    【解决方案2】:

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

    1. 当查询请求访问当前不可用的资源时,查询将暂停。这可以是逻辑资源(如锁定行)或物理资源(如内存数据页)。一旦资源可用,查询就会再次开始运行。
    2. 高磁盘 IO 意味着需要访问大量数据页才能满足请求。

    这就是我从上面的屏幕截图中可以看出的全部内容。但是,如果我推测,您的 IO 子系统可能太慢而无法满足需求。这可能是由于缺少索引或磁盘实际上太慢造成的。请记住,单个 OLTP 查询的 15000 次读取略高,但并不少见。

    【讨论】:

    • 如果原因是锁,那不应该出现在BlkByblocking_session_id吗?
    • 正确,@JonofAllTrades。如果进程 A 试图访问被进程 B 锁定的资源,则 B 的会话 ID 将显示在 A 的 blocking_process_id 列中。
    【解决方案3】:

    暂停。 会话正在等待 I/O 等事件完成。

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

    【讨论】:

    • 这意味着数据库所在的磁盘正在被大量使用(由它自己的数据库或服务器上的其他软件使用)并且数据库必须排队等待轮到它访问驱动器.
    • 这就是我要找的。这些数字对于 I/O 来说算高吗?
    • 正如我在回答中所说,这种解释实际上是推测,因为您的屏幕截图并未显示查询实际在等待什么。 OLTP 查询的 15K 读取略高,但并未超出范围。
    猜你喜欢
    • 2017-09-01
    • 2017-06-22
    • 1970-01-01
    • 2012-10-23
    • 2023-04-02
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多