等待类型及说明如下表:

等待类型 说明

ASYNC_DISKPOOL_LOCK

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

ASYNC_IO_COMPLETION

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

ASYNC_NETWORK_IO

当任务被阻止在网络之后时出现在网络写入中。

BACKUP

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

BACKUP_OPERATOR

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

BACKUPBUFFER

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

BACKUPIO

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

BACKUPTHREAD

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

BAD_PAGE_PROCESS

当后台错误页记录器正在尝试避免每隔五秒以上的时间运行时出现。

BROKER_RECEIVE_WAITFOR

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

BROKER_TRANSMITTER

当 SQL Server 2005 Service Broker 传输代码中出现非常短暂的等待时出现。

BROKER_SHUTDOWN

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

BROKER_MASTERSTART

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

BROKER_EVENTHANDLER

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

BROKER_REGISTERALLENDPOINTS

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

BROKER_INIT

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

BUILTIN_HASHKEY_MUTEX

仅供内部使用。

CHKPT

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

CLR_AUTO_EVENT

当某任务当前正在执行公共语言运行时 (CLR) 执行并且正在等待特殊的自动事件启动时出现。

CLR_CRST

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

CLR_MANUAL_EVENT

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

CLR_MONITOR

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

CLR_RWLOCK_READER

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

CLR_RWLOCK_WRITER

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

CLR_TASK_JOIN

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

CLR_SEMAPHORE

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

CMEMTHREAD

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

CXPACKET

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

DEADLOCK_ENUM_MUTEX

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

DEADLOCK_TASK_SEARCH

当某任务正在等待内部死锁监视器同步时出现。对于该等待类型的事件,死锁监视器在大多数时间都处于空闲状态。

DISABLE_VERSIONING

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

DISKIO_SUSPEND

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

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

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

ENABLE_VERSIONING

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

EXCHANGE

在同步查询处理器交换迭代器期间出现。很少发生。

EXECSYNC

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

FCB_REPLICA_READ

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

FCB_REPLICA_WRITE

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

HTTP_ENDPOINT_COLLCREATE

在启动时出现以创建端点集合。该状态并非特定于 HTTP。

HTTP_ENUMERATION

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

IMPPROV_IOWAIT

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

IO_AUDIT_MUTEX

仅供内部使用。

LATCH_DT

针对分布式事务闩锁的闩锁等待。它不包括缓冲区闩锁或事务标记闩锁。

LATCH_EX

针对排他闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。

LATCH_KP

针对保留闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。

LATCH_NL

针对空闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。

LATCH_SH

针对共享闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。

LATCH_UP

针对更新闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。

LAZYWRITER_SLEEP

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

LCK_M_BU

当某任务正在等待获取大容量更新锁时出现。

LCK_M_IS

当某任务正在等待获取意向共享锁时出现。

LCK_M_IU

当某任务正在等待获取意向更新锁时出现。

LCK_M_IX

当某任务正在等待获取意向排他锁时出现。

LCK_M_RIn_NL

当某任务正在等待获取当前键值上的 NULL 锁以及当前键和上一个键之间的插入范围锁时出现。键上的 NULL 锁是指立即释放的锁。

LCK_M_RIn_S

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的插入范围锁时出现。

LCK_M_RIn_U

任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的插入范围锁。

LCK_M_RIn_X

当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的插入范围锁时出现。

LCK_M_RS_S

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的共享范围锁时出现。

LCK_M_RS_U

当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的更新范围锁时出现。

LCK_M_RX_S

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的排他范围锁时出现。

LCK_M_RX_U

当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的排他范围锁时出现。

LCK_M_RX_X

当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的排他范围锁时出现。

LCK_M_S

当某任务正在等待获取共享锁时出现。

LCK_M_SCH_M

当某任务正在等待获取架构修改锁时出现。

LCK_M_SCH_S

当某任务正在等待获取架构共享锁时出现。

LCK_M_SIU

当某任务正在等待获取共享意向更新锁时出现。

LCK_M_SIX

当某任务正在等待获取共享意向排他锁时出现。

LCK_M_U

当某任务正在等待获取更新锁时出现。

LCK_M_UIX

当某任务正在等待获取更新意向排他锁时出现。

LCK_M_X

当某任务正在等待获取排他锁时出现。

DBMIRROR_SEND

当某任务正在等待清除网络层的通信积压以便能够发送消息时出现。指示通信层正在开始重载并影响数据库镜像数据吞吐量。Microsoft 支持策略不适用于 SQL Server 2005 的数据库镜像功能。根据默认设置,数据库镜像当前已被禁用,但通过使用跟踪标志 1400 作为启动参数可以启用该功能,该功能仅供评估使用。(有关跟踪标志的详细信息,请参阅跟踪标志 (Transact-SQL)。)不要在生产环境中使用数据库镜像,Microsoft 支持服务不支持使用数据库镜像的数据库或应用程序。在 SQL Server 2005 中包括数据库镜像文档仅供评估使用,SQL Server 2005 支持和升级文档策略不适用于数据库镜像文档。

DBMIRRORING_CMD

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

LOGBUFFER

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

LOGMGR

当某任务正在等待任何未完成的日志 I/O 在关闭日志之前完成时出现。

LOGMGR_FLUSH

仅供内部使用。

LOGMGR_RESERVE_APPEND

当某任务正在等待查看日志截断是否能释放日志空间以使该任务能写入新的日志记录时出现。

LOWFAIL_MEMMGR_QUEUE

当某任务正在从因内存不足而失败的队列中删除页时出现。

MSQL_DQ

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

MSQL_XACT_MGR_MUTEX

当某任务正在等待获取会话事务管理器的所有权以执行会话级别事务操作时出现。互斥体用于同步同一个会话中不同线程的事务管理器对象的使用。

MSQL_XP

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

OLEDB

当 SQL Server 调用 Microsoft SQL Native Client OLEDB 访问接口时发生。该状态不用于同步。

PAGEIOLATCH_DT

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

PAGEIOLATCH_EX

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

PAGEIOLATCH_KP

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

PAGEIOLATCH_NL

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

PAGEIOLATCH_SH

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

PAGEIOLATCH_UP

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

PAGELATCH_DT

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

PAGELATCH_EX

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

PAGELATCH_KP

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

PAGELATCH_NL

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

PAGELATCH_SH

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

PAGELATCH_UP

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

PRINT_ROLLBACK_PROGRESS

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

PWAIT_QPJOB_WAITFOR_ABORT

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

PWAIT_QPJOB_KILL

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

QRY_MEM_GRANT_INFO_MUTEX

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

QUERY_NOTIFICATION_MGR_MUTEX

保护查询通知管理器中的垃圾收集队列。

QUERY_NOTIFICATION_SUBSCRIPTION_MUTEX

基于每个订阅控制事务的互斥体。这表示每个订阅具有一个互斥体并使用该互斥体更改其事务状态。

QUERY_NOTIFICATION_TABLE_MGR_MUTEX

仅供内部使用。

QUERY_NOTIFICATION_UNITTEST_MUTEX

仅供内部使用。

SQLTRACE_BUFFER_FLUSH

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

返回执行的线程所遇到的所有 等待 的相关信息。 可以使用此聚合视图来诊断 SQL Server 以及特定查询和批处理的性能问题。 来自微软官方 https://msdn.microsoft.com/zh-cn/library/ms179984.aspx 适用范围: SQL Server SQL Server 2008 到当前版本)。 数据 类型 wait _ type nvarcha 等待 类型 说明  ASYNC_DISKPOOL_LOCK 当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。 ASYNC_IO_COMPLETION 当某任务正在 等待 I/O 完成时出现。 ASYNC_NETWORK_IO 当任务被阻止在网络之后时出现在网络写入 。 BACKUP 当任务作为备份处理的一部分被阻止时出现。 BACKUP_OPERATOR 当任务正在 等待 磁带装入时出现。若要 SQL Server 数据库 接收到查询请求,从生成计划到执行计划的过程, 等待 次数和 等待 时间在一定程度上揭示了系统性能的压力,如果资源严重不足,就会成为性能的瓶颈。因此,对 等待 的监控非常有助于对系统性能进行诊断,对查询语句进行性能调优。偶尔一次的异常 等待 ,不足以表明系统存在瓶颈,但是, SQL Server 实例经常出现特定的 等待 类型 ,并且 等待 时间趋于增加,这就说明,系统存在压力,或内存,或IO等,根据W... log Buffer Space-日志缓冲空间 当 数据库 产生日志的速度比 LGWR 的写出速度快,或者是当日志切换( log switch)太慢时,就会发生这种 等待 。这个 等待 出现时,通常表明 redo log buffer 过小, 为解决这个问题,可以考虑增大日志文件的大小,或者增加日志缓冲区的大小。 另外一个可能的原因是磁盘 I/O 存在瓶颈,可以考虑使用写入速度更快的磁盘。在允许的条件下... SQL Server 2008 R2有490种 等待 状态( SQL Server 2014 CTP1 甚至多达759种), 但是常用的、有价值的其实不多。总的来说, 等待 类型 分为3类:资源 等待 、队列 等待 和 外部 等待 。在日常使用 ,通常会过滤掉系统相关的 等待 类型 ,因为这些对诊断性能瓶颈 没有多大用处,同时还过滤掉 等待 时间为0的 类型 ,语句如下 SELECT wait _ type , signal_ wait _time_ms , wait _time_ms FROM sys.dm_os SQL Server Backup DatabaseBackup is the SQL Server Maintenance Solution’s stored procedure for backing up databases. DatabaseBackup is supported on SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQ 我曾经有个客户问我,如果我的磁盘专门放日志,那么格式化磁盘的时候,分配单元大小应该选多大呢?这个问题,其实和 SQL server 的日志I/O操作有关。 SQL server 在写日志的时候,会发出多大的I/O请求呢? 先来看看和这个问题相关的Allocation Unit。我们在格式化磁盘的时候, 会有一个选项叫做分配单元大小(Allocation Unit),如下所示: