资源等待类型sys.dm_os_wait_stats

动态管理视图  sys.dm_os_wait_stats 

返回执行的线程所遇到的所有等待的相关信息。可以使用该聚合视图来诊断 SQL Server 以及特定查询和批处理的性能问题。

列名 数据类型 说明

wait_type


nvarchar(60)


等待类型的名称。


waiting_tasks_count


bigint


该等待类型的等待数。该计数器在每开始一个等待时便会增加。


wait_time_ms


bigint


该等待类型的总等待时间(毫秒)。该时间包括 signal_wait_time_ms。


max_wait_time_ms


bigint


该等待类型的最长等待时间。


signal_wait_time_ms


bigint


正在等待的线程从收到信号通知到其开始运行之间的时差。

权限

需要对服务器具有 VIEW SERVER STATE 权限。

备注

等待的类型

资源等待

当某个工作线程请求访问某个不可用的资源(因为该资源正在由其他某个工作线程使用,或者该资源尚不可用)时,便会发生资源等待。资源等待的示例包括锁等待、闩锁等待、网络等待以及磁盘 I/O 等待。锁等待和闩锁等待是指等待同步对象

队列等待

当工作线程空闲,等待分配工作时便会发生队列等待。队列等待通常发生在系统后台任务(如监视死锁以及清除已删除的记录等任务)中。这些任务将等待工作请求被放入工作队列。即使没有新数据包放入队列,队列等待也可能定期处于活动状态。

外部等待

当 SQL Server 工作线程正在等待外部事件(如扩展存储过程调用或链接服务器查询)完成时,便会发生外部等待。当诊断有妨碍的问题时,请记住,外部等待不会始终表示工作线程处于空闲状态,因为工作线程可能处于活动状态且正在运行某些外部代码。

sys.dm_os_wait_stats 显示已经完成的等待的时间。此动态管理视图不显示当前等待。

如果出现下列任一情况,则不认为 SQL Server 工作线程处于等待状态:

  • 资源变得可用。
  • 查询非空。
  • 外部进程完成。

尽管线程不再处于等待状态,但是它不必立即开始运行。这是因为此类线程首先放入可运行工作线程的队列中,并且必须等待量程在计划程序中运行。

在 SQL Server 中,等待时间计数器的数据类型为 bigint,因此它们不会像 SQL Server 的早期版本中的等效计数器那样滚动进行计数。

执行查询期间的特定等待时间类型可以说明查询中存在瓶颈或失效点。同样,如果服务器级的等待时间较长或等待计数较多,说明服务器实例内交互查询交互中存在瓶颈或热点。例如,锁等待指示查询争用数据;页 IO 闩锁等待指示 IO 响应时间较慢;页闩锁更新指示表示文件布局不正确。

此动态管理视图的内容可通过运行以下命令来重置:

  复制代码
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);
GO

该命令将所有计数器重置为 0。

注意:
这些统计信息在每次重新启动 SQL Server 时都不能持续存在,并且所有的数据均为自上次重置统计信息或启动服务器以来累积的数据。

下表列出各任务所遇到的等待类型。

等待类型 说明

ASYNC_DISKPOOL_LOCK


当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。


ASYNC_IO_COMPLETION


当某任务正在等待 I/O 完成时出现。


ASYNC_NETWORK_IO


当任务被阻止在网络之后时出现在网络写入中。验证客户端是否正在处理来自服务器的数据。


BACKUP


当任务作为备份处理的一部分被阻止时出现。


BACKUP_CLIENTLOCK


标识为仅供参考。不提供支持。不保证以后的兼容性。


BACKUP_OPERATOR


当任务正在等待磁带装入时出现。若要查看磁带状态,请查询 sys.dm_io_backup_tapes。如果装入操作没有挂起,则该等待类型可能指示磁带机发生硬件问题。


BACKUPBUFFER


在备份任务等待数据或等待用来存储数据的缓冲区时发生。此类型不常见,只有当任务等待装入磁带时才会出现。


BACKUPIO


在备份任务等待数据或等待用来存储数据的缓冲区时发生。此类型不常见,只有当任务等待装入磁带时才会出现。


BACKUPTHREAD


当某任务正在等待备份任务完成时出现。等待时间可能较长,从几分钟到几个小时。如果被等待的任务正处于 I/O 进程中,则该类型不指示发生问题。


BAD_PAGE_PROCESS


当后台可疑页记录器正在尝试避免每隔五秒以上的时间运行时出现。过多的可疑页会导致记录器频繁运行。


BROKER_CONNECTION_RECEIVE_TASK


在等待访问以便在连接端点上接收消息时出现。已序列化对端点的接收访问。


BROKER_ENDPOINT_STATE_MUTEX


当存在访问 Service Broker 连接端点状态的争用时出现。已序列化对更改状态的访问。


BROKER_EVENTHANDLER


当某任务正在 Service Broker 的主事件处理程序中等待时出现。出现时间应该非常短暂。


BROKER_INIT


当初始化每个活动数据库中的 Service Broker 时出现。该状态应当频繁出现。


BROKER_MASTERSTART


当某任务正在等待 Service Broker 的主事件处理程序启动时出现。出现时间应该非常短暂。


BROKER_RECEIVE_WAITFOR


当 RECEIVE WAITFOR 正在等待时出现。如果没有准备接收的消息,则通常出现该状态。


BROKER_REGISTERALLENDPOINTS


在初始化 Service Broker 连接端点的过程中出现。出现时间应该非常短暂。


BROKER_SHUTDOWN


当按计划关闭 Service Broker 时出现。该状态出现的时间应当尽量短暂。


BROKER_TRANSMITTER


当 Service Broker 发送器正在等待工作时出现。


BUILTIN_HASHKEY_MUTEX


可能在实例启动之后而在初始化内部数据结构时出现。数据结构初始化之后将不会再次出现。


CHECKPOINT_QUEUE


当检查点任务正在等待下一个检查点请求时出现。


CHKPT


在服务器启动时出现以通知检查点线程可以启动。


CLR_AUTO_EVENT


当某任务当前正在执行公共语言运行时 (CLR) 执行并且正在等待特殊的自动事件启动时出现。通常会出现长时间等待,这并不意味着出现问题。


CLR_CRST


当某任务当前正在执行 CLR 执行并且正在等待输入当前由另一项任务正在使用的任务的关键部分时出现。


CLR_JOIN


当某任务当前正在执行 CLR 执行并且正在等待另一项任务结束时出现。当两任务之间具有联接时出现该等待状态。


CLR_MANUAL_EVENT


当某任务当前正在执行 CLR 执行并且正在等待特定手动事件启动时出现。


CLR_MONITOR


当某任务当前正在执行 CLR 执行并且正在等待获取用于监视器的锁时出现。


CLR_RWLOCK_READER


当某任务当前正在执行 CLR 执行并且正在等待读取器锁时出现。


CLR_RWLOCK_WRITER


当某任务当前正在执行 CLR 执行并且正在等待编写器锁时出现。


CLR_SEMAPHORE


当某任务当前正在执行 CLR 执行并且正在等待信号量时出现。


CLR_TASK_START


在等待 CLR 任务完成启动时出现。


CMEMTHREAD


当某任务正在等待线程安全内存对象时出现。当多项任务尝试分配来自同一个内存对象的内存而导致出现争用时,便可能延长等待时间。


CURSOR


标识为仅供参考。不提供支持。不保证以后的兼容性。


CURSOR_ASYNC


标识为仅供参考。不提供支持。不保证以后的兼容性。


CXPACKET


当尝试同步查询处理器交换迭代器时出现。如果针对该等待类型的争用成为问题时,可以考虑降低并行度。


DBMIRROR_DBM_EVENT


标识为仅供参考。不提供支持。不保证以后的兼容性。


DBMIRROR_DBM_MUTEX


标识为仅供参考。不提供支持。不保证以后的兼容性。


DBMIRROR_EVENTS_QUEUE


在数据库镜像等待处理事件时出现。


DBMIRROR_SEND


当某任务正在等待清除网络层的通信积压以便能够发送消息时出现。指示通信层正在开始重载并影响数据库镜像数据吞吐量。


DBMIRROR_WORKER_QUEUE


指示数据库镜像工作线程任务正在等待更多的工作。


DBMIRRORING_CMD


当某任务正在等待日志记录刷新到磁盘时出现。该等待状态应当保留较长的时间。


DBTABLE


标识为仅供参考。不提供支持。不保证以后的兼容性。


DEADLOCK_ENUM_MUTEX


在死锁监视器和 sys.dm_os_waiting_tasks 尝试确保 SQL Server 不同时运行多个死锁搜索时出现。


DEADLOCK_TASK_SEARCH


长时间等待此资源指示服务器正在 sys.dm_os_waiting_tasks 之上执行查询,并且这些查询正在阻止死锁监视器运行死锁搜索。该等待类型仅供死锁监视器使用。sys.dm_os_waiting_tasks 之上的查询使用 DEADLOCK_ENUM_MUTEX。


DEBUG


在 Transact-SQL 和 CLR 调试内部同步期间出现。


DISABLE_VERSIONING


当 SQL Server 轮询版本事务管理器,以查看最早的活动事务的时间戳是否晚于状态开始更改时的时间戳时出现。如果是,则所有在 ALTER DATABASE 语句运行之前启动的快照事务都已完成。当 SQL Server 通过 ALTER DATABASE 语句禁用版本控制时使用该等待状态。


DISKIO_SUSPEND


当某任务正在等待访问文件(外部备份处于活动状态)时出现。针对每个正在等待的用户进程报告该状态。每个用户进程大于五的计数可能指示外部备份需要太长时间才能完成。


DLL_LOADING_MUTEX


在等待 XML 分析器 DLL 加载时出现。


DROPTEMP


在上次尝试删除临时对象失败后再进行下次尝试之前出现。对于每一次失败的删除尝试,等待持续时间都以指数形式增长。


DTC


当某任务正在等待用于管理状态转换的事件时出现。该状态控制当 SQL Server 接收到 Microsoft 分布式事务处理协调器 (MS DTC) 服务不可用的通知之后执行 MS DTC 事务恢复的时间。

该状态还说明在 SQL Server 启动了 MS DTC 事务提交并且 SQL Server 正在等待 MS DTC 提交完成时进行等待的任务。


DTC_ABORT_REQUEST


当 MS DTC 工作线程会话正在等待获得 MS DTC 事务的所有权时,在该会话中出现。当 MS DTC 拥有了事务后,该会话可以回滚事务。通常,该会话将等待另一个正在使用事务的会话。


DTC_RESOLVE


当恢复任务正在等待跨数据库事务中的 master 数据库以查询该事务的结果时出现。


DTC_STATE


当某任务正在等待对内部 MS DTC 全局状态对象的更改进行保护的事件时出现。该状态应当保持非常短的时间。


DTC_TMDOWN_REQUEST


当 SQL Server 接收到 MS DTC 服务不可用的通知时,在 MS DTC 工作线程会话中出现。首先,工作线程将等待 MS DTC 恢复进程启动。然后,工作线程等待获取其正在处理的分布式事务的结果。此过程可能一直执行,直到重新建立与 MS DTC 服务的连接。


DTC_WAITFOR_OUTCOME


当恢复任务等待 MS DTC 处于活动状态以启用准备好的事务的解决方法时出现。


DUMP_LOG_COORDINATOR


当主任务正在等待子任务生成数据时出现。该状态通常不会出现。长时间的等待指示出现意外的阻塞。应当对子任务进行调查。


EC


标识为仅供参考。不提供支持。不保证以后的兼容性。


EE_PMOLOCK


在语句执行过程中特定的内存分配类型同步期间出现。


EE_SPECPROC_MAP_INIT


在对内部过程哈希表创建进行同步期间发生。此等待只能发生在 SQL Server 实例启动之后对哈希表的初始访问期间。


ENABLE_VERSIONING


当 SQL Server 在声明数据库可以转换到快照隔离允许的状态之前,等待该数据库中的所有更新事务完成时出现。当 SQL Server 通过 ALTER DATABASE 语句启用快照隔离时使用该状态。


ERROR_REPORTING_MANAGER


在对多个并发错误日志初始化进行同步期间发生。


EXCHANGE


在并行查询过程中查询处理器交换迭代器同步期间出现。


EXECSYNC


在并行查询过程中同步与交换迭代器无关的区域内的查询处理器期间出现。此类区域的示例包括位图、二进制大型对象 (LOB) 以及假脱机迭代器。LOB 可能经常使用该等待状态。


FAILPOINT


标识为仅供参考。不提供支持。不保证以后的兼容性。


FCB_REPLICA_READ


当同步快照(或 DBCC 创建的临时快照)稀疏文件的读取时出现。


FCB_REPLICA_WRITE


当同步快照(或 DBCC 创建的临时快照)稀疏文件的页推送或页请求时出现。


FT_RESTART_CRAWL


在全文爬网需要从上一个已知可用点重新启动以便从暂时故障中恢复时出现。等待使当前正在此总体中工作的工作线程任务完成或退出当前步骤。


FT_RESUME_CRAWL


标识为仅供参考。不提供支持。不保证以后的兼容性。


FULLTEXT GATHERER


在同步全文操作期间发生。


HTTP_ENDPOINT_COLLCREATE


标识为仅供参考。不提供支持。不保证以后的兼容性。


HTTP_ENUMERATION


在启动时出现,以枚举 HTTP 端点以启动 HTTP。


HTTP_START


当连接正在等待 HTTP 完成初始化时出现。


IMP_IMPORT_MUTEX


标识为仅供参考。不提供支持。不保证以后的兼容性。


IMPPROV_IOWAIT


当 SQL Server 等待 Bulkload I/O 完成时出现。


INDEX_USAGE_STATS_MUTEX


标识为仅供参考。不提供支持。不保证以后的兼容性。


IO_AUDIT_MUTEX


在跟踪事件缓冲区同步期间出现。


IO_COMPLETION


在等待 I/O 操作完成时出现。通常,该等待类型表示非数据页 I/O。数据页 I/O 完成等待显示为 PAGEIOLATCH_* waits。


KSOURCE_WAKEUP


在等待来自服务控制管理器的请求期间由服务控制任务使用。可能会出现长时间等待,这并不指示出现问题。


KTM_ENLISTMENT


标识为仅供参考。不提供支持。不保证以后的兼容性。


KTM_RECOVERY_MANAGER


标识为仅供参考。不提供支持。不保证以后的兼容性。


KTM_RECOVERY_RESOLUTION


标识为仅供参考。不提供支持。不保证以后的兼容性。


LATCH_DT


等待 DT(破坏)闩锁时出现。它不包括缓冲区闩锁或事务标记闩锁。sys.dm_os_latch_stats 中提供了 LATCH_* waits 的列表。请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。


LATCH_EX


等待 EX(排他)闩锁时出现。它不包括缓冲区闩锁或事务标记闩锁。sys.dm_os_latch_stats 中提供了 LATCH_* waits 的列表。请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。


LATCH_KP


等待 KP(保持)闩锁时出现。它不包括缓冲区闩锁或事务标记闩锁。sys.dm_os_latch_stats 中提供了 LATCH_* waits 的列表。请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。


LATCH_NL


标识为仅供参考。不提供支持。不保证以后的兼容性。


LATCH_SH


等待 SH(共享)闩锁时出现。它不包括缓冲区闩锁或事务标记闩锁。sys.dm_os_latch_stats 中提供了 LATCH_* waits 的列表。请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。


LATCH_UP


等待 UP(更新)闩锁时出现。它不包括缓冲区闩锁或事务标记闩锁。sys.dm_os_latch_stats 中提供了 LATCH_* waits 的列表。请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。


LAZYWRITER_SLEEP


当惰性编写器被挂起时出现。正在等待的后台任务所用时间的度量值。在查找用户阻隔点所时不要考虑该状态。


LCK_M_BU


当某任务正在等待获取大容量更新 (BU) 锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_IS


当某任务正在等待获取意向共享 (IS) 锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_IU


当某任务正在等待获取意向更新 (IU) 锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_IX


当某任务正在等待获取意向排他 (IX) 锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RIn_NL


当某任务正在等待获取当前键值上的 NULL 锁以及当前键和上一个键之间的插入范围锁时出现。键上的 NULL 锁是指立即释放的锁。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RIn_S


当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的插入范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RIn_U


任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的插入范围锁。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RIn_X


当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的插入范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RS_S


当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的共享范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RS_U


当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的更新范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RX_S


当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RX_U


当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_RX_X


当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_S


当某任务正在等待获取共享锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_SCH_M


当某任务正在等待获取架构修改锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_SCH_S


当某任务正在等待获取架构共享锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_SIU


当某任务正在等待获取共享意向更新锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_SIX


当某任务正在等待获取共享意向排他锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_U


当某任务正在等待获取更新锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_UIX


当某任务正在等待获取更新意向排他锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LCK_M_X


当某任务正在等待获取排他锁时出现。有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)。


LOGBUFFER


当某任务正在等待日志缓冲区的空间以存储日志记录时出现。连续的高值可能指示日志设备无法跟上服务器生成的日志量。


LOGMGR


在数据库关闭过程中,当某任务正在等待任何未完成的日志 I/O 在关闭日志之前完成时出现。


LOGMGR_FLUSH


标识为仅供参考。不提供支持。不保证以后的兼容性。


LOGMGR_QUEUE


在日志编写器任务等待工作请求时出现。


LOGMGR_RESERVE_APPEND


当某任务正在等待查看日志截断是否能释放日志空间以使该任务能写入新的日志记录时出现。请考虑为受影响的数据库增加日志文件的大小以减少该等待时间。


LOWFAIL_MEMMGR_QUEUE


在等待可用内存期间出现。


MIRROR_SEND_MESSAGE


标识为仅供参考。不提供支持。不保证以后的兼容性。


MISCELLANEOUS


标识为仅供参考。不提供支持。不保证以后的兼容性。


MSQL_DQ


当某任务正在等待分布式查询操作完成时出现。它用于检测潜在的多个活动的结果集 (MARS) 应用程序死锁。该等待将在分布式查询调用完成时结束。


MSQL_SYNC_PIPE


标识为仅供参考。不提供支持。不保证以后的兼容性。


MSQL_XACT_MGR_MUTEX


当某任务正在等待获取会话事务管理器的所有权以执行会话级别事务操作时出现。


MSQL_XACT_MUTEX


在事务使用同步期间出现。请求必须先获取互斥体才可以使用事务。


MSQL_XP


当某任务正在等待扩展存储过程结束时出现。SQL Server 使用该等待状态检测潜在的 MARS 应用程序死锁。该等待将在扩展存储过程调用结束时停止。


MSSEARCH


在全文搜索调用期间出现。该等待在全文操作完成时结束。它不指示争用,而指示全文操作的持续时间。


NET_WAITFOR_PACKET


在网络读取过程中连接正在等待网络数据包时出现。


OLEDB


在 SQL Server 调用 SQL Server Native Client OLE DB 访问接口时出现。该等待类型不用于同步。而是用于指示调用 OLE DB 访问接口的持续时间。


ONDEMAND_TASK_QUEUE


在后台任务等待高优先级系统任务请求时出现。长时间的等待指示一直没有要处理的高优先级请求,不应引起关注。


PAGEIOLATCH_DT


在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“破坏”模式。长时间的等待可能指示磁盘子系统出现问题。


PAGEIOLATCH_EX


在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“独占”模式。长时间的等待可能指示磁盘子系统出现问题。


PAGEIOLATCH_KP


在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“保持”模式。长时间的等待可能指示磁盘子系统出现问题。


PAGEIOLATCH_NL


标识为仅供参考。不提供支持。不保证以后的兼容性。


PAGEIOLATCH_SH


在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“共享”模式。长时间的等待可能指示磁盘子系统出现问题。


PAGEIOLATCH_UP


在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“更新”模式。长时间的等待可能指示磁盘子系统出现问题。


PAGELATCH_DT


在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“破坏”模式。


PAGELATCH_EX


在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“独占”模式。


PAGELATCH_KP


在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“保持”模式。


PAGELATCH_NL


标识为仅供参考。不提供支持。不保证以后的兼容性。


PAGELATCH_SH


在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“共享”模式。


PAGELATCH_UP


在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“更新”模式。


PARALLEL_BACKUP_QUEUE


在序列化由 RESTORE HEADERONLY、RESTORE FILELISTONLY 或 RESTORE LABELONLY 生成的输出时出现。


PRINT_ROLLBACK_PROGRESS


用于等待用户进程在已通过 ALTER DATABASE 终止子句完成转换的数据库中结束。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)。


QNMANAGER_ACQUIRE


标识为仅供参考。不提供支持。不保证以后的兼容性。


QPJOB_KILL


指示异步统计信息自动更新在开始运行时通过调用 KILL 命令而取消。终止线程处于挂起状态,等待它开始侦听 KILL 命令。正常情况下,该值不到一秒钟。


QPJOB_WAITFOR_ABORT


指示异步统计信息自动更新在运行时通过调用 KILL 命令而取消。目前更新已完成,但是在终止线程消息协调完成之前一直于挂起状态。这是一个普通而少见的状态,应当非常短暂。正常情况下,该值不到一秒钟。


QRY_MEM_GRANT_INFO_MUTEX


当查询执行内存管理尝试控制对静态授予信息列表的访问时出现。该状态列出当前已批准的内存请求以及正在等待的内存请求的有关信息。该状态是一个简单的访问控制状态。该状态始终不应当等待较长的时间。如果未释放互斥体,则所有占用内存的新查询都将停止响应。


QUERY_EXECUTION_INDEX_SORT_EVENT_OPEN


当脱机创建索引生成以并行方式运行,并且正在排序的不同工作线程同步访问排序文件时出现。


QUERY_NOTIFICATION_MGR_MUTEX


在查询通知管理器中的垃圾收集队列同步期间出现。


QUERY_NOTIFICATION_SUBSCRIPTION_MUTEX


在查询通知中事务的状态同步期间出现。


QUERY_NOTIFICATION_TABLE_MGR_MUTEX


在查询通知管理器中的内部同步期间出现。


QUERY_NOTIFICATION_UNITTEST_MUTEX


标识为仅供参考。不提供支持。不保证以后的兼容性。


QUERY_OPTIMIZER_PRINT_MUTEX


在查询优化器诊断信息输出生成的同步期间出现。该等待类型仅在诊断设置已根据 Microsoft 产品支持的说明启用后出现。


QUERY_TRACEOUT


标识为仅供参考。不提供支持。不保证以后的兼容性。


RECOVER_CHANGEDB


在备用数据库中同步数据库状态期间出现。


RG_RECONFIG


在调用 ALTER RESOURCE GOVERNOR RECONFIGURE 或 ALTER RESOURCE GOVERNOR DISABLE 时出现。


REPL_CACHE_ACCESS


在同步复制项目缓存的期间出现。在这些等待期间,复制日志读取器将停止,已发布表中的数据定义语言 (DDL) 语句也将被阻止。


REPL_SCHEMA_ACCESS


在同步复制架构版本信息的期间出现。该状态在下列情况下存在:针对复制对象执行 DDL 语句时,以及日志读取器根据 DDL 出现次数生成或使用版本控制架构时。


REPLICA_WRITES


在任务等待将页写入数据库快照或 DBCC 副本的操作完成时出现。


REQUEST_DISPENSER_PAUSE


在任务等待所有未完成的 I/O 完成时出现,以便可以为快照备份冻结文件的 I/O。


REQUEST_FOR_DEADLOCK_SEARCH


在死锁监视器等待开始下一次死锁搜索时出现。在两次死锁检测之间可能出现该等待,长时间等待此资源并不指示出现问题。


RESMGR_THROTTLED


在有新请求传入并且基于 GROUP_MAX_REQUESTS 设置而中止时出现。


RESOURCE_QUEUE


在同步不同的内部资源队列期间出现。


RESOURCE_SEMAPHORE


当由于存在其他并发查询而无法立即批准查询内存请求时出现。等待时间较长或等待次数较多可能指示并发查询的数量过多或内存请求的数量过多。


RESOURCE_SEMAPHORE_MUTEX


在查询等待其保留线程的请求完成时出现。它也在同步查询编译和内存授予请求时出现。


RESOURCE_SEMAPHORE_QUERY_COMPILE


在并发查询编译的数量达到中止限制时出现。等待时间较长或等待次数较多可能指示编译、重新编辑或不可缓存的计划过多。


RESOURCE_SEMAPHORE_SMALL_QUERY


当由于存在其他并发查询而无法立即批准较小查询的内存请求时出现。等待时间不应超过几秒钟,因为如果服务器无法在几秒钟内给予请求的内存,则会将请求传输到主查询内存池中。等待时间较长可能指示当主内存池被等待的查询阻塞时并发小查询的数量过多。


SEC_DROP_TEMP_KEY


在尝试删除临时安全密钥失败之后并在重试之前出现。


SERVER_IDLE_CHECK


当资源监视器正在尝试将 SQL Server 实例声明为空闲或正在尝试唤醒时,在 SQL Server 实例空闲状态的同步期间出现。


SHUTDOWN


在关闭语句等待活动连接退出时出现。


SLEEP_BPOOL_FLUSH


当检查点为了避免磁盘子系统泛滥而中止新 I/O 的发布时出现。


SLEEP_DBSTARTUP


在等待所有数据库恢复时数据库的启动期间出现。


SLEEP_DCOMSTARTUP


通常在等待 DCOM 初始化完成时 SQL Server 实例的启动期间出现。


SLEEP_MSDBSTARTUP


在 SQL 跟踪等待 msdb 数据库完成启动时出现。


SLEEP_SYSTEMTASK


在等待 tempdb 完成启动时后台任务的启动期间出现。


SLEEP_TASK


当任务在等待一般事件出现期间睡眠时出现。


SLEEP_TEMPDBSTARTUP


在任务等待 tempdb 完成启动时出现。


SNI_CRITICAL_SECTION


在 SQL Server 网络组件中进行内部同步期间出现。


SNI_HTTP_ACCEPT


标识为仅供参考。不提供支持。不保证以后的兼容性。


SNI_HTTP_WAITFOR_0_DISCON


在等待未完成的 HTTP 连接退出的过程中 SQL Server 的关闭期间出现。


SOAP_READ


在等待 HTTP 网络读取完成时出现。


SOAP_WRITE


在等待 HTTP 网络写入完成时出现。


SOS_CALLBACK_REMOVAL


在为了删除回调而对回调列表执行同步期间出现。服务器初始化完成之后,此计数器可能不会更改。


SOS_LOCALALLOCATORLIST


在 SQL Server 内存管理器中进行内部同步期间出现。


SOS_MEMORY_USAGE_ADJUSTMENT


在池之间调整内存使用情况时出现。


SOS_OBJECT_STORE_DESTROY_MUTEX


当破坏池中的对象时在内存池中进行内部同步期间出现。


SOS_PROCESS_AFFINITY_MUTEX


在同步访问进程关联设置期间出现。


SOS_RESERVEDMEMBLOCKLIST


在 SQL Server 内存管理器中进行内部同步期间出现。


SOS_SCHEDULER_YIELD


在任务自愿为要执行的其他任务生成计划程序时出现。在该等待期间任务正在等待其量程更新。


SOS_STACKSTORE_INIT_MUTEX


在内部存储初始化同步期间出现。


SOS_SYNC_TASK_ENQUEUE_EVENT


在任务以同步方式启动时出现。SQL Server 中的大多数任务都以同步方式启动,在此方式中控制权在任务请求放置在工作队列之后立即返回到启动器。


SOS_VIRTUALMEMORY_LOW


在内存分配等待资源管理器释放虚拟内存时出现。


SOSHOST_EVENT


当宿主组件(如 CLR)在 SQL Server 事件同步对象中等待时出现。


SOSHOST_INTERNAL


在宿主组件(如 CLR)使用的内存管理器回调同步期间出现。


SOSHOST_MUTEX


当宿主组件(如 CLR)在 SQL Server 互斥体同步对象中等待时出现。


SOSHOST_RWLOCK


当宿主组件(如 CLR)在 SQL Server 读取器编写器同步对象中等待时出现。


SOSHOST_SEMAPHORE


当宿主组件(如 CLR)在 SQL Server 信号量同步对象中等待时出现。


SOSHOST_SLEEP


当宿主任务在等待一般事件出现期间睡眠时出现。宿主任务由宿主组件(如 CLR)使用。


SOSHOST_TRACELOCK


在同步访问跟踪流期间出现。


SOSHOST_WAITFORDONE


在宿主组件(如 CLR)等待任务完成时出现。


SQLCLR_APPDOMAIN


在 CLR 等待应用程序域完成启动时出现。


SQLCLR_ASSEMBLY


在等待访问 appdomain 中已加载的程序集列表时出现。


SQLCLR_DEADLOCK_DETECTION


在 CLR 等待死锁检测完成时出现。


SQLCLR_QUANTUM_PUNISHMENT


在 CLR 任务由于已经超过了其执行量程而中止时出现。此中止已完成,以便减小此大量消耗资源的任务对其他任务的影响。


SQLSORT_NORMMUTEX


在初始化内部排序结构时进行内部同步期间出现。


SQLSORT_SORTMUTEX


在初始化内部排序结构时进行内部同步期间出现。


SQLTRACE_BUFFER_FLUSH


当某任务正在等待后台任务将跟踪缓冲区每隔四秒刷新到磁盘时出现。


SQLTRACE_LOCK


在文件跟踪过程中同步跟踪缓冲区期间出现。


SQLTRACE_SHUTDOWN


在跟踪关闭等待未完成的跟踪事件完成时出现。


SQLTRACE_WAIT_ENTRIES


在 SQL 跟踪事件队列等待数据包到达队列时出现。


SRVPROC_SHUTDOWN


在关闭进程等待内部资源释放以完全关闭时出现。


TEMPOBJ


在临时对象删除同步时出现。该等待很少出现,仅在任务已请求 temp 表的独占访问删除时出现。


THREADPOOL


当某任务正在等待工作线程运行时出现。这可能指示最大工作线程数设置过低,或批处理执行时间过长,从而减少可满足其他批处理的工作线程数。


TRACEWRITE


当 SQL 跟踪行集跟踪提供程序等待可用缓冲区或可处理事件的缓冲区时出现。


TRAN_MARKLATCH_DT


在等待事务标记闩锁中的破坏模式闩锁时出现。事务标记闩锁用于同步提交与标记的事务。


TRAN_MARKLATCH_EX


在等待标记事务中的排他模式闩锁时出现。事务标记闩锁用于同步提交与标记的事务。


TRAN_MARKLATCH_KP


在等待标记事务中的保持模式闩锁时出现。事务标记闩锁用于同步提交与标记的事务。


TRAN_MARKLATCH_NL


标识为仅供参考。不提供支持。不保证以后的兼容性。


TRAN_MARKLATCH_SH


在等待标记事务中的共享模式闩锁时出现。事务标记闩锁用于同步提交与标记的事务。


TRAN_MARKLATCH_UP


在等待标记事务中的更新模式闩锁时出现。事务标记闩锁用于同步提交与标记的事务。


TRANSACTION_MUTEX


在同步多个批处理访问事务期间出现。


UTIL_PAGE_ALLOC


在内存不足期间事务日志扫描等待可用内存时出现。


VIEW_DEFINITION_MUTEX


在同步访问已缓存的视图定义期间出现。


WAIT_FOR_RESULTS


在等待查询通知触发时出现。


WAITFOR


显示为 WAITFOR Transact-SQL 语句的结果。等待持续时间由此语句的参数确定。它是用户启动的等待。


WAITSTAT_MUTEX


在同步访问用于填充 sys.dm_os_wait_stats 的统计信息集期间出现。


WORKTBL_DROP


在删除出现故障的工作表之后,重试之前的暂停期间出现。


WRITELOG


等待日志刷新完成时出现。导致日志刷新的常见操作是检查点和事务提交。


XACT_OWN_TRANSACTION


在等待获取事务的所有权时出现。


XACT_RECLAIM_SESSION


在等待会话的当前所有者释放会话的所有权时出现。


XACTLOCKINFO


在同步访问事务锁列表期间出现。除事务本身之外,在页拆分过程中死锁检测和锁迁移等操作也可访问锁列表。


XACTWORKSPACE_MUTEX


在同步事务中的脱离以及事务登记成员之间的数据库锁数时出现

时间: 2024-09-21 14:02:45

资源等待类型sys.dm_os_wait_stats的相关文章

SQLSERVER排查CPU占用高的情况

今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库   现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU占用100% 排查方向   一般排查都是用下面的脚本,一般会用到三个视图sys.sysprocesses ,dm_exec_sessions ,dm_exe

初涉SQL Server性能问题(2/4):列出等待资源的会话

原文:初涉SQL Server性能问题(2/4):列出等待资源的会话 在初涉SQL Server性能问题(1/4)里,我们知道了如何快速检查服务器实例上正运行的任务数和IO等待的任务数.这个是轻量级的脚本,不会给服务器造成任何压力,即使服务器在高负荷下,也可以正常获得结果. 问题检测的第2步是获取在进行任何资源等待的会话.下面的脚本会帮助我们获得这些信息.这个查询需要预建立一个函数,如果会话是由SQL Server代理启动的话,会显示具体的作业名. 1 /********************

SQL SERVER中的OLEDB等待事件

OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一.它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据.它出现在远程系统(remote system )或网络连接速度不够快,因此调用服务器必须等待要返回结果的情况下.OLEDB等待事件一般是由那些活动造成呢?它一般由下面一些事件引起: 远程过程调用(Remote procedure calls) 链接

SQL点滴13—收集SQLServer线程等待信息

原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_stats 这是一个系统视图,里面存储线程所遇到的所有的等待信息,具体的列如下表 列名 数据类型 说明 Wait_type Nvarchar(60) 等待类型名称 waiting_tasks_count Bigint 等待类型的等待数.该计数

sqlserver中几种典型的等待_MsSql

为了准备今年的双11很久没有更新blog,在最近的几次sqlserver问题的排查中,总结了sqlserver几种典型的等待类型,类似于oracle中的等待事件,如果看到这样的等待类型时候能够迅速定位问题的根源,下面通过一则案例来把这些典型的等待处理方法整理出来: 第一种等待.memory等待 早上接到一用户反馈其RDS实例非常的慢,通过观察sqlserver活动会话监视器(active monitor)的waiting tasks(类似于mysql的thread running)可以看到有10

如何在SQL Server 2014中用资源调控器压制你的存储?_MsSql

在今天的文章里,我想谈下SQL Server 2014里非常酷的提升:现在你终于可以根据需要的IOPS来压制查询!资源调控器(Resource Governor)自SQL Server 2008起引入,但提供的功能还是有所限制:你只能限制CPU时间(这个已经很棒了),还有你能限制查询(从每个独立的查询)内存量. 但作为DBA的你,你经常会进行一些数据库维护操作,例如索引重建,DBCC CHECKDB操作等.我们都知道,这些操作会在你的存储里带来大量的IOPS直至峰值.如果在7 * 24在线的数据

SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(上)_MsSql

很多人在查看SQL语句等待的时候都是通过sys.dm_exec_requests查看,等待类型也是通过wait_type得出,sys.dm_os_waiting_tasks也可以看到session的等待那么有什么区别呢.... 废话不多说直接开整. 测试版本2012 sys.dm_os_waiting_tasks 的字段说明: waiting_task_address varbinary(8) 等待任务的地址. session_id smallint 与任务关联的会话的 ID. exec_con

SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(上)

很多人在查看SQL语句等待的时候都是通过sys.dm_exec_requests查看,等待类型也是通过wait_type得出,sys.dm_os_waiting_tasks也可以看到session的等待那么有什么区别呢.... 废话不多说直接开整. 测试版本2012 sys.dm_os_waiting_tasks 的字段说明: waiting_task_address varbinary(8) 等待任务的地址. session_id smallint 与任务关联的会话的 ID. exec_con

sqlserver中几种典型的等待

为了准备今年的双11很久没有更新blog,在最近的几次sqlserver问题的排查中,总结了sqlserver几种典型的等待类型,类似于oracle中的等待事件,如果看到这样的等待类型时候能够迅速定位问题的根源,下面通过一则案例来把这些典型的等待处理方法整理出来: 第一种等待.memory等待 早上接到一用户反馈其RDS实例非常的慢,通过观察sqlserver活动会话监视器(active monitor)的waiting tasks(类似于mysql的thread running)可以看到有10