SQL Server中的所有等待事件类型说明

0    372    3

Tags:

👉 本文共约103583个字,系统预计阅读时间或需390分钟。

简介

SQL Server数据库接收到查询请求,从生成计划到执行计划的过程,等待次数和等待时间在一定程度上揭示了系统性能的压力,如果资源严重不足,就会成为性能的瓶颈。因此,对等待的监控非常有助于对系统性能进行诊断,对查询语句进行性能调优。偶尔一次的异常等待,不足以表明系统存在瓶颈,但是,SQL Server实例经常出现特定的等待类型,并且等待时间趋于增加,这就说明,系统存在压力,或内存,或IO等,根据WaitType对系统进行监控和诊断,还能对查询进行性能调优,例如,Lock等待表明执行查询存在数据竞争,PageIOLatch等待表明IO响应缓慢,PageLatch等待表明文件的布局需要改进等。

当辅助角色请求访问因资源正被其他某个辅助角色使用或尚不可用而不可用的资源时,将发生资源等待。 资源等待的示例包括锁、闩锁、网络和磁盘 I/O 等待。 锁等待和闩锁等待是指等待同步对象。

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

当SQL Server辅助角色正在等待外部事件(如扩展存储过程调用或链接服务器查询)完成时,会发生外部等待。 诊断阻塞问题时,请记住,外部等待并不总是意味着辅助角色处于空闲状态,因为辅助角色可能正在主动运行某些外部代码。

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

如果存在以下任一条件,则不会将SQL Server工作线程视为正在等待:

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

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

查看等待信息

本文分享常用的等待类型及其产生的原因,通常使用DMV来查看等待:

  • sys.dm_exec_requests 来查看系统当前正在处理的请求,
  • sys.dm_os_wait_stats 统计当前系统发生过的等待的信息
  • sys.dm_os_waiting_tasks 查看当前正处于等待状态的task

1,等待信息统计

SQL Server 保存了从上一次服务器启动或者手动清空之后累计的等待信息,总的来说,等待类型分为三类:资源等待,队列等待和外部等待,在日常使用中,通常会过滤掉系统相关的等待类型,因为这些等待对诊断性能瓶颈没有多大用处,同时还过滤掉等待时间为0的类型,脚本见文末的附言。

2,清空等待信息统计

对于生成环境,如果需要收集等待信息,那么最好把等待信息清0,然后重新开始计数,通常使用DBCC SQPERF()命令来实现:

所有类型

  • 并行CXPACKET :发生在多任务系统中,用于表示并发执行的子线程在等待其他子线程的完成。如果针对该等待类型的争用成为问题时,可以考虑降低并行度。若系统主机的CPU持续在99%以上,则说明系统并发度过高,或系统的CPU有瓶颈了。

  • I/O:ASYNC_IO_COMPITION或IO_COMPITION ,IO瓶颈的潜在指标

  • IO_COMPLETION : 在等待 I/O 操作完成时出现。通常,该等待类型表示非数据页 I/O。例如,会话被kill掉时,可能会发生该等待。IO_COMPLETION 这种等待类型表示数据文件中的各种同步读和写操作,这些操作与表无关,并且从事务日志中读取。在等待I/O操作完成时发生。这种等待类型通常表示非数据页I/O。IO_COMPLETION与PAGEIOLATCH_XXX的最大的区别是就在于IO_COMPLETION是非数据页的等待,而PAGEIOLATCH_XXX是数据页的IO等待

  • Buffer:PAGEIOLATCHXXX ,用于描述数据页的IO争用,说明系统正在从硬盘加载数据到内存的Buffer Pool中。当你的系统出现大量的 PAGEIOLATCH 类等待,说明你磁盘可能存在压力(磁盘速度不能满足当前业务需求)或你的内存不够用,不能缓存业务常用数据而经常要与磁盘交互!

    若大量SQL等待同一个表,且等待PAGEIOLATCH_SH事件,则表示该表索引碎片可能很严重 ,需要重建索引。

  • PAGELATCH_XXX:

  • 非Buffer:LATCH_XXXX

  • 锁阻塞:LCK_*

  • CPU:SOS_SCHEDULER_YIELD,当前任务正在执行,但是其主动退让调度程序上的时间片(time slicer),供其他进程使用,自己在后台执行任务。

  • THREADPOOL:查询正在等待可用的Worker线程,可能出现了大量的并行计划,以至于用完了系统可用的Worker。

  • DISPATCHER_QUEUE_SEMAPHORE:发生当一个进程(Thread)等待处理更多的Work时,也就是说,一个Thread处于空闲状态,等待调度去工作。如果等待时间增加,说明调度器(Dispatcher)非常空闲;该WaitType不会成为竞争资源,而将其他事务阻塞,在做Wait统计分析,可以过滤掉。

  • 日志:WRITELOG 或 LOGBUFFER , 说明 数据库的写入量比较大。WRITELOG 和磁盘有关的另一个等待状态,正在等待写日志记录,意味着写入速度也明显跟不上。而速度跟不上一般有两种情况:磁盘压力大响应时间长或真的速度不能满足读写需要。

  • WRITELOG :等待日志刷新完成时出现。导致日志刷新的常见操作是检查点和事务提交。若是2014版本,则可以考虑配置延迟事务持久性提交特性。

  • 内存不足:RESOURCE_SEMAPHORE

  • 外部:PREEMPTIVE_XXX

  • 备份:DISKIO_SUSPENDE

  • 等待事件: HADR_SYNC_COMMIT

  • LOG_MANAGER:日志太大导致。根据DMV查看资源等待情况,发现大量LATCH_EX,等待资源则是LOG_MANAGER。检查日志发现已经是超过900G,系统初始化时已经使用了256个日志文件,总共64G日志,感觉日志部分可能不受控制,所以把数据库日志还原模型改成SIMPLE,立刻问题解决了。分析原因应该是日志写满后,SQL Server向操作系统申请更多磁盘空间造成的磁盘IO,期间造成了写日志等待。

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

说明: 实时备库可能有很耗CPU的sql

等待事件: LATCH_EX [ACCESS_METHODS_DATASET_PARENT]

说明:查询没有索引,需要回表查数据

LATCH_EX:Exclusive Latch,表明数据正在被改变或添加。两个EX Latch不能同时保留在用一个页上

查看sys.dm_os_waitstats的内容,你会看到LATCH, PAGELATCH_ 和PAGEIOLATCH_打头的Latch,

​ 其中LATCH_打头的等待都是用于Non-BUF类型,

​ PAGELATCH_打头的Latch应用于各种页,

​ PAGEIOLATCH_打头的Latch用于数据从磁盘移到RAM。

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

Wait 类型说明
ABR标识为仅供参考。 不支持。 无法保证将来的兼容性。
AM_INDBUILD_ALLOCATION仅限内部使用。

适用于:SQL Server 2012 (11.x) 及更高版本。

AM_SCHEMAMGR_UNSHARED_CACHE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
ASSEMBLY_FILTER_HASHTABLE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
ASSEMBLY_LOAD在以独占的方式访问程序集加载时出现。
ASYNC_DISKPOOL_LOCK当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。
ASYNC_IO_COMPLETION当任务等待异步非数据 I/O 完成时发生。 示例包括热备用日志传送涉及的 I/O、数据库镜像以及一些与批量导入相关的操作。
ASYNC_NETWORK_IO当阻止任务等待客户端应用程序确认它已处理发送到它的所有数据时,在网络写入时发生。 验证客户端应用程序是否正在尽快处理来自服务器的数据,或者不存在网络延迟。 客户端应用程序无法足够快地使用数据的原因包括:应用程序设计问题,例如在结果到达时将结果写入文件、等待用户输入、对大型数据集(而不是服务器端筛选)进行客户端筛选,或者引入有意的等待。 此外,由于虚拟/物理内存不足、CPU 使用率 100% 等问题,客户端计算机可能遇到响应缓慢的问题。网络延迟也可能导致这种等待 - 通常是由网络适配器驱动程序问题、筛选器驱动程序、防火墙或路由器配置错误引起的。
ASYNC_OP_COMPLETION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
ASYNC_OP_CONTEXT_READ仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
ASYNC_OP_CONTEXT_WRITE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
ASYNC_SOCKETDUP_IO仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
AUDIT_GROUPCACHE_LOCK当等待控制对某个特殊缓存的访问的锁时出现。 该缓存包含正在使用哪些审核来审核每个审核操作组的相关信息。
AUDIT_LOGINCACHE_LOCK当等待控制对某个特殊缓存的访问的锁时出现。 该缓存包含正在使用哪些审核来审核登录审核操作组的相关信息。
AUDIT_ON_DEMAND_TARGET_LOCK当等待用于确保扩展事件目标相关审核的单一初始化的锁时出现。
AUDIT_XE_SESSION_MGR当等待用于同步扩展事件会话相关审核的启动和停止的锁时出现。
备份当任务作为备份处理的一部分被阻止时出现。
BACKUP_OPERATOR当任务正在等待磁带装入时出现。 若要查看磁带状态,请查询 sys.dm_io_backup_tapes。 如果装载操作未挂起,则此等待类型可能表示磁带驱动器存在硬件问题。
BACKUPBUFFER在备份任务等待数据或等待用来存储数据的缓冲区时发生。 此类型不是典型类型,除非任务正在等待磁带装载。
BACKUPIO在备份任务等待数据或等待用来存储数据的缓冲区时发生。 此类型不是典型类型,除非任务正在等待磁带装载。
BACKUPTHREAD当某任务正在等待备份任务完成时出现。 等待时间可能较长,从几分钟到几个小时。 如果正在等待的任务在 I/O 进程中,则此类型并不表示存在问题。
BAD_PAGE_PROCESS当后台可疑页记录器正在尝试避免每隔五秒以上的时间运行时出现。 过多的可疑页会导致记录器频繁运行。
BLOB_METADATA仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
BMPALLOCATION同步大型位图筛选器的分配时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
BMPBUILD同步大型位图筛选器的生成时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
BMPREPARTITION同步大型位图筛选器的重新分区时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
BMPREPLICATION在跨工作线程同步大型位图筛选器的复制时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
BPSORT在跨多个线程同步数据集的排序时,使用并行批处理模式计划发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2016 (13.x) 及更高版本。
BROKER_CONNECTION_RECEIVE_TASK在等待访问以便在连接端点上接收消息时出现。 已序列化对端点的接收访问。
BROKER_DISPATCHER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
BROKER_ENDPOINT_STATE_MUTEX发生争用以访问 Service Broker 连接终结点的状态时发生。 已序列化对更改状态的访问。
BROKER_EVENTHANDLER当任务在 Service Broker 的主事件处理程序中等待时发生。 出现时间应该非常短暂。
BROKER_FORWARDER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
BROKER_INIT在每个活动数据库中初始化 Service Broker 时发生。 该状态应当频繁出现。
BROKER_MASTERSTART当任务正在等待 Service Broker 的主事件处理程序启动时发生。 出现时间应该非常短暂。
BROKER_RECEIVE_WAITFOR当 RECEIVE WAITFOR 正在等待时出现。 这可能意味着队列中没有准备好接收任何消息,或者锁争用阻止它从队列接收消息。
BROKER_REGISTERALLENDPOINTS在初始化 Service Broker 连接终结点期间发生。 出现时间应该非常短暂。
BROKER_SERVICE更新与目标服务关联的 Service Broker 目标列表或重新确定其优先级时发生。
BROKER_SHUTDOWN在 Service Broker 计划关闭时发生。 该状态出现的时间应当尽量短暂。
BROKER_START仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
BROKER_TASK_SHUTDOWN仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
BROKER_TASK_STOP在 Service Broker 队列任务处理程序尝试关闭任务时发生。 已序列化状态检查,并且必须预先处于运行状态。
BROKER_TASK_SUBMIT仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
BROKER_TO_FLUSH当 Service Broker 延迟刷新器将内存中传输对象刷新到工作表中时发生。
BROKER_TRANSMISSION_OBJECT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
BROKER_TRANSMISSION_TABLE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
BROKER_TRANSMISSION_WORK仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
BROKER_TRANSMITTER在 Service Broker 发送器等待工作时发生。 Service Broker 有一个名为“发送器”的组件,该组件计划来自多个对话的消息,以便通过一个或多个连接终结点通过网络发送。 发送器有 2 个专用线程用于此目的。 当这些发送器线程等待使用传输连接发送对话消息时,将对此等待类型收费。 此等待类型的 高值 waiting_tasks_count 指向这些发送器线程的间歇性工作,并不表示出现任何性能问题。 如果根本不使用 Service Broker, waiting_tasks_count 则 2 个发送器线程) 应为 2 (,wait_time_ms应是实例启动后的持续时间的两倍。 请参阅 Service Broker 等待统计信息
BUFFERPOOL_SCAN当缓冲池扫描并行运行且主任务等待扫描完成时,可能会出现此情况。 有关详细信息,请参阅触发缓冲池扫描的操作可能在大内存计算机上运行缓慢
适用于:SQL Server 2022 (16.x) 及更高版本。
BUILTIN_HASHKEY_MUTEX可能在实例启动之后而在初始化内部数据结构时出现。 初始化数据结构后不会重复。
CHANGE_TRACKING_WAITFORCHANGES仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
CHECK_PRINT_RECORD标识为仅供参考。 不支持。 不能保证将来的兼容性。
CHECK_SCANNER_MUTEX仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
CHECK_TABLES_INITIALIZATION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
CHECK_TABLES_SINGLE_SCAN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
CHECK_TABLES_THREAD_BARRIER仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
CHECKPOINT_QUEUE当检查点任务正在等待下一个检查点请求时出现。
CHKPT在服务器启动时出现以通知检查点线程可以启动。
CLEAR_DB在执行会更改数据库状态的操作过程中发生,例如打开或关闭数据库。
CLR_AUTO_EVENT当某任务当前正在执行公共语言运行时 (CLR) 执行并且正在等待特殊的自动事件启动时出现。 长时间等待是典型的,并不表示有问题。
CLR_CRST当某任务当前正在执行 CLR 执行并且正在等待输入当前由另一项任务正在使用的任务的关键部分时出现。
CLR_JOIN当某任务当前正在执行 CLR 执行并且正在等待另一项任务结束时出现。 当两任务之间具有联接时出现该等待状态。
CLR_MANUAL_EVENT当某任务当前正在执行 CLR 执行并且正在等待特定手动事件启动时出现。
CLR_MEMORY_SPY当为用于记录来自 CLR 的所有虚拟内存分配的数据结构等待获取锁时出现。 如果存在并行访问,该数据结构将被锁定以维护其完整性。
CLR_MONITOR当某任务当前正在执行 CLR 执行并且正在等待获取用于监视器的锁时出现。
CLR_RWLOCK_READER当某任务当前正在执行 CLR 执行并且正在等待读取器锁时出现。
CLR_RWLOCK_WRITER当某任务当前正在执行 CLR 执行并且正在等待编写器锁时出现。
CLR_SEMAPHORE当某任务当前正在执行 CLR 执行并且正在等待信号量时出现。
CLR_TASK_START在等待 CLR 任务完成启动时出现。
CLRHOST_STATE_ACCESS当等待获取对 CLR 宿主数据结构的独占访问时出现。 当设置或关闭 CLR 运行时时出现此等待类型。
CMEMPARTITIONED仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
CMEMTHREAD当某任务正在等待线程安全内存对象时出现。 当多项任务尝试分配来自同一个内存对象的内存而导致出现争用时,便可能延长等待时间。
COLUMNSTORE_BUILD_THROTTLE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
COLUMNSTORE_COLUMNDATASET_SESSION_LIST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
COMMIT_TABLE仅限内部使用。
CONNECTION_ENDPOINT_LOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
COUNTRECOVERYMGR仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
CREATE_DATINISERVICE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
CXCONSUMER当使用者线程 (父) 等待生成者线程发送行时,使用并行查询计划发生。 CXCONSUMER 等待是由 Exchange 迭代器在其生成者线程中用完行导致的。 这是并行查询执行的正常部分。
适用于:SQL Server (从 SQL Server 2016 (13.x) SP2 开始,SQL Server 2017 (14.x) CU3) 、Azure SQL Database、Azure SQL 托管实例
CXPACKET在等待同步查询处理器 Exchange 迭代器以及生成和使用行时,与并行查询计划一起发生。 如果等待过多且无法通过优化查询 ((例如) 添加索引)来减少,请考虑调整并行度的成本阈值或降低最大并行度 (MaxDOP) 。 注意:从 SQL Server 2016 (13.x) SP2 和 SQL Server 2017 (14.x) CU3 开始,CXPACKET 仅指等待同步 Exchange 迭代器和生成行。 使用行的线程在 CXCONSUMER 等待类型中单独跟踪。 如果使用者线程速度太慢,Exchange 迭代器缓冲区可能会变满并导致 CXPACKET 等待。 注意:在 Azure SQL Database 和 Azure SQL 托管实例 中,CXPACKET 仅指等待生成行的线程。 Exchange 迭代器同步在CXSYNC_PORT和CXSYNC_CONSUMER等待类型中单独跟踪。 使用行的线程在 CXCONSUMER 等待类型中单独跟踪。
CXSYNC_PORT在等待在生成者和使用者线程之间打开、关闭和同步 Exchange 迭代器 端口时,与并行查询计划一起发生。 例如,如果查询计划具有长时间排序操作,则CXSYNC_PORT等待时间可能会更高,因为必须先完成排序,然后才能同步 Exchange 迭代器端口。 适用范围:Azure SQL Database、Azure SQL 托管实例
CXSYNC_CONSUMER在等待到达所有使用者线程之间的 Exchange 迭代器 同步点时,使用并行查询计划发生。 适用范围:Azure SQL Database、Azure SQL 托管实例
CXROWSET_SYNC在并行范围扫描期间出现。
DAC_INIT当正在初始化专用管理员连接时出现。
DBCC_SCALE_OUT_EXPR_CACHE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
DBMIRROR_DBM_EVENT标识为仅供参考。 不支持。 不能保证将来的兼容性。
DBMIRROR_DBM_MUTEX标识为仅供参考。 不支持。 不能保证将来的兼容性。
DBMIRROR_EVENTS_QUEUE在数据库镜像等待处理事件时出现。
DBMIRROR_SEND当某任务正在等待清除网络层的通信积压以便能够发送消息时出现。 指示通信层正在开始重载并影响数据库镜像数据吞吐量。
DBMIRROR_WORKER_QUEUE指示数据库镜像工作线程任务正在等待更多的工作。
DBMIRRORING_CMD当某任务正在等待日志记录刷新到磁盘时出现。 该等待状态应当保留较长的时间。
DBSEEDING_FLOWCONTROL仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
DBSEEDING_OPERATION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
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 调试期间发生。
DIRECTLOGCONSUMER_LIST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DIRTY_PAGE_POLL仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
DIRTY_PAGE_SYNC仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
DIRTY_PAGE_TABLE_LOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DISABLE_VERSIONINGSQL Server轮询版本事务管理器以查看最早的活动事务的时间戳是否晚于状态开始更改时的时间戳时发生。 如果是,则所有在 ALTER DATABASE 语句运行之前启动的快照事务都已完成。 当SQL Server使用 ALTER DATABASE 语句禁用版本控制时,将使用此等待状态。
DISKIO_SUSPEND当某任务正在等待访问文件(外部备份处于活动状态)时出现。 针对每个正在等待的用户进程报告该状态。 每个用户进程大于五的计数可能指示外部备份需要太长时间才能完成。
DISPATCHER_PRIORITY_QUEUE_SEMAPHORE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
DISPATCHER_QUEUE_SEMAPHORE当调度程序池中的线程正在等待更多要处理的工作时出现。 当调度程序处于空闲状态时,此等待类型的等待时间预计要增加。
DLL_LOADING_MUTEX在等待 XML 分析器 DLL 加载时出现。
DPT_ENTRY_LOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DROP_DATABASE_TIMER_TASK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
DROPTEMP在上次尝试删除临时对象失败后再进行下次尝试之前出现。 对于每一次失败的删除尝试,等待持续时间都以指数形式增长。
DTC当某任务正在等待用于管理状态转换的事件时出现。 此状态控制在SQL Server收到 MS DTC 服务不可用的通知后,何时恢复 Microsoft 分布式事务处理协调器 (MS DTC) 事务。
DTC_ABORT_REQUEST当会话正在等待获取 MSDTC 事务的所有权时,在 MSDTC 辅助角色会话中发生。 当 MS DTC 拥有了事务后,该会话可以回滚事务。 通常,该会话将等待另一个正在使用事务的会话。
DTC_RESOLVE当恢复任务正在等待跨数据库事务中的 master 数据库以查询该事务的结果时出现。
DTC_STATE当某任务正在等待对内部 MS DTC 全局状态对象的更改进行保护的事件时出现。 该状态应当保持非常短的时间。
DTC_TMDOWN_REQUEST当SQL Server收到 MS DTC 服务不可用的通知时,在 MSDTC 辅助角色会话中发生。 首先,工作线程将等待 MS DTC 恢复进程启动。 然后,工作线程等待获取其正在处理的分布式事务的结果。 此过程可能一直执行,直到重新建立与 MS DTC 服务的连接。
DTC_WAITFOR_OUTCOME当恢复任务等待 MS DTC 处于活动状态以启用准备好的事务的解决方法时出现。
DTCNEW_ENLIST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DTCNEW_PREPARE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DTCNEW_RECOVERY仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DTCNEW_TM仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DTCNEW_TRANSACTION_ENLISTMENT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
DTCPNTSYNC仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
DUMP_LOG_COORDINATOR当主任务正在等待子任务生成数据时出现。 通常,此状态不会发生。 长时间的等待指示出现意外的阻塞。 应当对子任务进行调查。
DUMP_LOG_COORDINATOR_QUEUE仅限内部使用。
DUMPTRIGGER标识为仅供参考。 不支持。 无法保证将来的兼容性。
EC标识为仅供参考。 不支持。 无法保证将来的兼容性。
EE_PMOLOCK在语句执行过程中特定的内存分配类型同步期间出现。
EE_SPECPROC_MAP_INIT在对内部过程哈希表创建进行同步期间发生。 此等待只能在SQL Server实例启动后首次访问哈希表期间发生。
ENABLE_EMPTY_VERSIONING仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
ENABLE_VERSIONING当SQL Server在声明数据库已准备好转换为允许的快照隔离状态之前等待此数据库中的所有更新事务完成时发生。 当 SQL Server 使用 ALTER DATABASE 语句启用快照隔离时,将使用此状态。
ERROR_REPORTING_MANAGER在对多个并发错误日志初始化进行同步期间发生。
交换在并行查询过程中查询处理器交换迭代器同步期间出现。
EXECSYNC在并行查询过程中同步与交换迭代器无关的区域内的查询处理器期间出现。 例如,此类区域包括位图、二进制大型对象 (LOB) 以及假脱机迭代器等。 LOB 可能会经常使用该等待状态。
EXECUTION_PIPE_EVENT_INTERNAL当同步通过连接上下文提交的批处理执行的创建器和使用者部件期间出现。
EXTERNAL_RG_UPDATE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
EXTERNAL_SCRIPT_NETWORK_IO仅限内部使用。
适用于:SQL Server 2017 (14.x) 到当前。
EXTERNAL_SCRIPT_PREPARE_SERVICE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
EXTERNAL_SCRIPT_SHUTDOWN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
EXTERNAL_WAIT_ON_LAUNCHER,仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
FABRIC_HADR_TRANSPORT_CONNECTION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FABRIC_REPLICA_CONTROLLER_LIST仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FABRIC_REPLICA_CONTROLLER_STATE_AND_CONFIG仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FABRIC_REPLICA_PUBLISHER_EVENT_PUBLISH仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FABRIC_REPLICA_PUBLISHER_SUBSCRIBER_LIST仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FABRIC_WAIT_FOR_BUILD_REPLICA_EVENT_PROCESSING仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FAILPOINT标识为仅供参考。 不支持。 无法保证将来的兼容性。
FCB_REPLICA_READ当同步快照(或 DBCC 创建的临时快照)稀疏文件的读取时出现。
FCB_REPLICA_WRITE当同步快照(或 DBCC 创建的临时快照)稀疏文件的页推送或页请求时出现。
FEATURE_SWITCHES_UPDATE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FFT_NSO_DB_KILL_FLAG仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_DB_LIST仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_FCB仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_FCB_FIND仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_FCB_PARENT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_FCB_RELEASE_CACHED_ENTRIES仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_FCB_STATE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
FFT_NSO_FILEOBJECT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NSO_TABLE_LIST仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_NTFS_STORE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_RECOVERY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_RSFX_COMM仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_RSFX_WAIT_FOR_MEMORY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_STARTUP_SHUTDOWN仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_STORE_DB仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_STORE_ROWSET_LIST仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FFT_STORE_TABLE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILE_VALIDATION_THREADS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
FILESTREAM_CACHE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILESTREAM_CHUNKER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILESTREAM_CHUNKER_INIT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILESTREAM_FCB仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILESTREAM_FILE_OBJECT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILESTREAM_WORKITEM_QUEUE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FILETABLE_SHUTDOWN仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FOREIGN_REDO仅限内部使用。
适用于:SQL Server 2017 (14.x) 到当前。
FORWARDER_TRANSITION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
FS_FC_RWLOCK当 FILESTREAM 垃圾收集器等待执行下列操作之一时出现: - 禁用备份和还原) 使用的垃圾回收 (。 - 执行 FILESTREAM 垃圾回收器的一个周期。
FS_GARBAGE_COLLECTOR_SHUTDOWN当 FILESTREAM 垃圾收集器等待清除任务完成时出现。
FS_HEADER_RWLOCK当等待获取对 FILESTREAM 数据容器的 FILESTREAM 标头的访问,以便读取或更新 FILESTREAM 标头文件 (Filestream.hdr) 中的内容时出现。
FS_LOGTRUNC_RWLOCK当等待获取对 FILESTREAM 日志截断的访问以执行下列操作之一时出现: - 暂时禁用 (FSLOG) 截断 (备份和还原) 使用的 FILESTREAM 日志。 - 执行 FSLOG 截断的一个周期。
FSA_FORCE_OWN_XACT当 FILESTREAM 文件 I/O 操作需要绑定到关联的事务,但该事务当前由另一个会话拥有时出现。
FSAGENT当 FILESTREAM 文件 I/O 操作等待的 FILESTREAM 代理资源正由另一个文件 I/O 操作使用时出现。
FSTR_CONFIG_MUTEX当等待另一个 FILESTREAM 功能重新配置完成时出现。
FSTR_CONFIG_RWLOCK当等待序列化对 FILESTREAM 配置参数的访问时出现。
FT_COMPROWSET_RWLOCK全文正在等待片段元数据操作。 记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_IFTS_RWLOCK全文正在等待内部同步。 记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_IFTS_SCHEDULER_IDLE_WAIT全文计划程序睡眠等待类型。 计划程序空闲。
FT_IFTSHC_MUTEX全文正在等待 fdhost 控制操作。 记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_IFTSISM_MUTEX全文正在等待通信操作。 记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_MASTER_MERGE全文正在等待主合并操作。 记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_MASTER_MERGE_COORDINATOR仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FT_METADATA_MUTEX记录为仅供参考。 不支持。 无法保证将来的兼容性。
FT_PROPERTYLIST_CACHE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
FT_RESTART_CRAWL在全文爬网需要从上一个已知可用点重新启动以便从暂时故障中恢复时出现。 等待使当前正在此总体中工作的工作线程任务完成或退出当前步骤。
FULLTEXT GATHERER在同步全文操作期间发生。
GDMA_GET_RESOURCE_OWNER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
GHOSTCLEANUP_UPDATE_STATS仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
GHOSTCLEANUPSYNCMGR仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
GLOBAL_QUERY_CANCEL仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
GLOBAL_QUERY_CLOSE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
GLOBAL_QUERY_CONSUMER仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
GLOBAL_QUERY_PRODUCER仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
GLOBAL_TRAN_CREATE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
GLOBAL_TRAN_UCS_SESSION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
GUARDIAN标识为仅供参考。 不支持。 无法保证将来的兼容性。
HADR_AG_MUTEX当Always On DDL 语句或 Windows Server 故障转移群集命令正在等待对可用性组的配置进行独占读/写访问时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_AR_CRITICAL_SECTION_ENTRY当Always On DDL 语句或 Windows Server 故障转移群集命令等待对关联可用性组的本地副本的运行时状态进行独占读/写访问时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_AR_MANAGER_MUTEX在可用性副本关闭正在等待完成启动或可用性副本启动正在等待完成关闭时发生。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_AR_UNLOAD_COMPLETED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_ARCONTROLLER_NOTIFICATIONS_SUBSCRIBER_LIST可用性副本事件(例如,状态更改或配置更改)的发布服务器正在等待对事件订阅服务器列表的独占的读/写访问。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_BACKUP_BULK_LOCKAlways On主数据库收到了来自辅助数据库的备份请求,并正在等待后台线程完成获取或释放 BulkOp 锁的请求的处理。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_BACKUP_QUEUEAlways On主数据库的备份后台线程正在等待来自辅助数据库的新工作请求。 (通常,当主数据库持有 BulkOp 日志并等待辅助数据库指示主数据库可以释放锁) 时,会发生此情况。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_CLUSAPI_CALLSQL Server 线程正在等待从非抢先模式(由 SQL Server 计划)切换到抢先模式(由操作系统计划)以便调用 Windows Server 故障转移群集 API 时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_COMPRESSED_CACHE_SYNC正在等待访问压缩后日志块的缓存,用来避免发送到多个辅助数据库的日志块的冗余压缩。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_CONNECTIVITY_INFO仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DATABASE_FLOW_CONTROL在已达到排队消息的最大数目时正在等待消息发送到伙伴。 指示日志扫描的运行运行速度要快于网络发送速度。 只有当网络发送速度比预期要慢时这种情况才会成为问题。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DATABASE_VERSIONING_STATE在Always On辅助数据库的版本控制状态更改时发生。 此等待适用于内部数据结构,通常很短,对数据访问没有直接影响。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DATABASE_WAIT_FOR_RECOVERY仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_DATABASE_WAIT_FOR_RESTART在可用性组控制下等待数据库重启Always On。 在正常情况下,这不是客户问题,因为此处需要等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING在Always On可用性组的可读辅助数据库中对对象 () 的查询在行版本控制上被阻止,同时等待提交或回滚在为读取工作负荷启用辅助副本时正在进行的所有事务。 这一等待类型确保在快照隔离下执行查询前行版本可用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DB_COMMAND等待会话消息的响应 (需要使用Always On对话消息基础结构) 从另一端发出显式响应。 许多不同的消息类型都使用此等待类型。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DB_OP_COMPLETION_SYNC等待会话消息的响应 (需要使用Always On对话消息基础结构) 从另一端发出显式响应。 许多不同的消息类型都使用此等待类型。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DB_OP_START_SYNCAlways On DDL 语句或 Windows Server 故障转移群集命令正在等待对可用性数据库及其运行时状态的序列化访问。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DBR_SUBSCRIBER可用性副本事件(例如,状态更改或配置更改)的发布服务器正在等待对与某一可用性数据库相对应的事件订阅服务器的运行时状态的独占读/写访问。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DBR_SUBSCRIBER_FILTER_LIST可用性副本事件(例如,状态更改或配置更改)的发布服务器正在等待对与可用性数据库相对应的事件订阅服务器的列表的独占读/写访问。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_DBSEEDING仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
HADR_DBSEEDING_LIST仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
HADR_DBSTATECHANGE_SYNC并发控制等待更新数据库副本的内部状态。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FABRIC_CALLBACK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
HADR_FILESTREAM_BLOCK_FLUSHFILESTREAM Always On传输管理器正在等待,直到日志块的处理完成。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_FILE_CLOSEFILESTREAM Always On传输管理器正在等待,直到处理下一个 FILESTREAM 文件并关闭其句柄。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_FILE_REQUESTAlways On次要副本正在等待主副本在 UNDO 期间发送所有请求的 FILESTREAM 文件。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_IOMGRFILESTREAM Always On传输管理器正在等待 R/W 锁,该锁在启动或关闭期间保护 FILESTREAM Always On I/O 管理器。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_IOMGR_IOCOMPLETIONFILESTREAM Always On I/O 管理器正在等待 I/O 完成。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_MANAGERFILESTREAM Always On传输管理器正在等待 R/W 锁,该锁在启动或关闭期间保护 FILESTREAM Always On传输管理器。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_FILESTREAM_PREPROC仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_GROUP_COMMIT事务提交处理正在等待允许组提交,以便可将多个提交日志记录放置于单个日志块中。 此等待是一种预期的条件,可用于优化日志 I/O、捕获和发送操作。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_LOGCAPTURE_SYNC在创建或销毁扫描时围绕日志捕获或应用对象的并发控制。 这是伙伴更改状态或连接状态时的预期等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_LOGCAPTURE_WAIT等待日志记录变得可用。 可在等待连接生成新的日志记录时或在读取未处于缓存中的记录时等待 I/O 完成时发生。 这是日志扫描与日志的结尾几乎保持同步或正在从磁盘读取时的预期的等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_LOGPROGRESS_SYNC在更新数据库副本的日志进度状态时的并发控制等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_NOTIFICATION_DEQUEUE处理 Windows Server 故障转移群集通知的后台任务正在等待下一个通知。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_NOTIFICATION_WORKER_EXCLUSIVE_ACCESSAlways On可用性副本管理器正在等待对处理 Windows Server 故障转移群集通知的后台任务的运行时状态进行序列化访问。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_NOTIFICATION_WORKER_STARTUP_SYNC后台任务正在等待处理 Windows Server 故障转移群集通知的后台任务完成启动。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_NOTIFICATION_WORKER_TERMINATION_SYNC后台任务正在等待处理 Windows Server 故障转移群集通知的后台任务终止。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_PARTNER_SYNC对伙伴列表的并发控制等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_READ_ALL_NETWORKS等待获取对 WSFC 网络列表的读取或写入访问。 仅限内部使用。 注意:引擎保留一个 WSFC 网络列表,该列表用于动态管理视图 ((例如sys.dm_hadr_cluster_networks) )或用于验证引用 WSFC 网络信息的 Always On Transact-SQL 语句。 此列表在引擎启动、WSFC 相关通知和内部Always On重启 ((例如,丢失和重新获取 WSFC 仲裁) )时更新。 在该列表中的更新正在进行时,任务通常会被阻止。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_RECOVERY_WAIT_FOR_CONNECTION正在等待辅助数据库在运行恢复之前连接到主数据库。 这是预期的等待,如果与主数据库的连接的建立速度比较慢,则此等待可能会延长。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_RECOVERY_WAIT_FOR_UNDO数据库恢复正在等待辅助数据库完成恢复和初始化阶段以便恢复到主数据库的公共日志点。 这是故障转移后的预期等待。 可以通过 Windows 系统监视器 (perfmon.exe) 和动态管理视图跟踪撤消进度。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_REPLICAINFO_SYNC正在等待并发控制更新当前副本状态。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_SEEDING_CANCELLATION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SEEDING_FILE_LIST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SEEDING_LIMIT_BACKUPS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SEEDING_SYNC_COMPLETION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SEEDING_TIMEOUT_TASK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SEEDING_WAIT_FOR_COMPLETION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_SYNC_COMMIT在同步的辅助数据库上等待事务提交处理以强化日志。 事务延迟性能计数器也会反映这一等待。 同步提交可用性组应有此等待类型,指示向辅助数据库发送、写入和确认日志提交的时间。 有关详细信息和故障排除HADR_SYNC_COMMIT,请参阅 此博客文章
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_SYNCHRONIZING_THROTTLE等待事务提交处理以允许同步辅助数据库赶上日志的主端,以便转换为同步状态。 这是辅助数据库几乎保持同步的预期的等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_TDS_LISTENER_SYNC内部Always On系统或 WSFC 群集将请求启动或停止侦听器。 对此请求的处理始终是异步的,并且存在删除冗余请求的机制。 还存在此进程由于配置更改而挂起的时刻。 与此侦听器同步机制相关的所有等待都使用此等待类型。 仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_TDS_LISTENER_SYNC_PROCESSING在需要启动和/或停止可用性组侦听器的 Always On Transact-SQL 语句末尾使用。 因为启动/停止操作异步完成,所以,在侦听器的状况为已知时,用户线程将阻止使用此等待类型。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_THROTTLE_LOG_RATE_GOVERNOR仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HADR_THROTTLE_LOG_RATE_MISMATCHED_SLO当异地复制辅助数据库配置的计算大小较低 (SLO) 比主数据库低时发生。 主数据库由于辅助数据库的日志消耗延迟而受到限制。 这是因为辅助数据库计算容量不足,无法跟上主数据库的更改速率。 适用于:Azure SQL 数据库
HADR_THROTTLE_LOG_RATE_LOG_SIZE仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
HADR_THROTTLE_LOG_RATE_SEEDING仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
HADR_THROTTLE_LOG_RATE_SEND_RECV_QUEUE_SIZE仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
HADR_TIMER_TASK正在等待获取计时器任务对象上的锁,并且还可用于正在执行工作的时间之间的实际等待。 例如,对于每 10 秒运行一次的任务,在执行一次后,Always On可用性组等待大约 10 秒来重新计划任务,并且此处包含等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_TRANSPORT_DBRLIST正在等待访问传输层的数据库副本列表。 用于向其授予访问权限的自旋锁。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_TRANSPORT_FLOW_CONTROL当未确认的未确认Always On消息数超过流控制阈值时等待。 此等待基于可用性副本到副本(而非数据库到数据库)。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_TRANSPORT_SESSIONAlways On可用性组正在等待更改或访问基础传输状态。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_WORK_POOL并发控制等待Always On可用性组后台工作任务对象。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_WORK_QUEUEAlways On可用性组后台工作线程等待分配新工作。 这是存在正等待新工作的已就绪工作线程时的预期等待,这是正常状态。
适用于:SQL Server 2012 (11.x) 及更高版本。
HADR_XRF_STACK_ACCESS访问 (查找、添加和删除Always On可用性数据库的扩展恢复分支堆栈) 。
适用于:SQL Server 2012 (11.x) 及更高版本。
HCCO_CACHE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HK_RESTORE_FILEMAP仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HKCS_PARALLEL_MIGRATION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HKCS_PARALLEL_RECOVERY仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
HTBUILD在哈希联接/聚合的输入端同步哈希表的生成时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2012 (11.x) 及更高版本。
HTDELETE在哈希联接/聚合结束时同步时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
HTMEMO在扫描哈希表以输出哈希联接/聚合中的匹配项/非匹配项之前同步时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
HTREINIT在为下一个部分联接重置哈希联接/聚合之前同步时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2014 (12.x) 及更高版本。
HTREPARTITION在哈希联接/聚合的输入端同步哈希表的重新分区时,与并行批处理模式计划一起发生。 如果等待过多,并且无法通过优化查询 ((例如) 添加索引)来减少等待,请考虑调整并行度的成本阈值或降低并行度。
适用于:SQL Server 2012 (11.x) 及更高版本。
HTTP_ENUMERATION在启动时出现,以枚举 HTTP 端点以启动 HTTP。
HTTP_START当连接正在等待 HTTP 完成初始化时出现。
HTTP_STORAGE_CONNECTION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
IMPPROV_IOWAITSQL Server等待大容量加载 I/O 完成时发生。
INSTANCE_LOG_RATE_GOVERNOR仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
INTERNAL_TESTING标识为仅供参考。 不支持。 不能保证将来的兼容性。
IO_AUDIT_MUTEX在跟踪事件缓冲区同步期间出现。
IO_COMPLETION在等待 I/O 操作完成时出现。 通常,该等待类型表示非数据页 I/O。 数据页 I/O 完成等待显示为 PAGEIOLATCH_* waits。
IO_QUEUE_LIMIT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
IO_RETRY当 I/O 操作(例如读取磁盘或写入磁盘)由于资源不足而失败,然后重试时出现。
IOAFF_RANGE_QUEUE标识为仅供参考。 不支持。 不能保证将来的兼容性。
KSOURCE_WAKEUP在等待来自服务控制管理器的请求期间由服务控制任务使用。 预计会有长时间的等待,但并不表示有问题。
KTM_ENLISTMENT标识为仅供参考。 不支持。 无法保证将来的兼容性。
KTM_RECOVERY_MANAGER标识为仅供参考。 不支持。 无法保证将来的兼容性。
KTM_RECOVERY_RESOLUTION标识为仅供参考。 不支持。 无法保证将来的兼容性。
LATCH_DT等待 DT(破坏)闩锁时出现。 这不包括缓冲区闩锁或事务标记闩锁。 在 MARKDOWN_HASH42f4e14f9c9ccf74f58513e1a2a8223cMARKDOWNHASH 中提供 LATCH* 等待列表。 请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。
LATCH_EX等待 EX(排他)闩锁时出现。 这不包括缓冲区闩锁或事务标记闩锁。 在 MARKDOWN_HASH42f4e14f9c9ccf74f58513e1a2a8223cMARKDOWNHASH 中提供 LATCH* 等待列表。 请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。
LATCH_KP等待 KP(保持)闩锁时出现。 这不包括缓冲区闩锁或事务标记闩锁。 在 MARKDOWN_HASH42f4e14f9c9ccf74f58513e1a2a8223cMARKDOWNHASH 中提供 LATCH* 等待列表。 请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。
LATCH_NL标识为仅供参考。 不支持。 无法保证将来的兼容性。
LATCH_SH等待 SH(共享)闩锁时出现。 这不包括缓冲区闩锁或事务标记闩锁。 在 MARKDOWN_HASH42f4e14f9c9ccf74f58513e1a2a8223cMARKDOWNHASH 中提供 LATCH* 等待列表。 请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。
LATCH_UP等待 UP(更新)闩锁时出现。 这不包括缓冲区闩锁或事务标记闩锁。 在 MARKDOWN_HASH42f4e14f9c9ccf74f58513e1a2a8223cMARKDOWNHASH 中提供 LATCH* 等待列表。 请注意,sys.dm_os_latch_stats 将 LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX 以及 LATCH_DT 等待分到一组。
LAZYWRITER_SLEEP延迟编写器任务挂起时发生。 正在等待的后台任务所用时间的度量值。 在查找用户停滞时,不要考虑此状态。
LCK_M_BU当某任务正在等待获取大容量更新 (BU) 锁时出现。 有关详细信息,请参阅 批量更新锁
LCK_M_BU_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的大容量更新 (BU) 锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 批量更新锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_BU_LOW_PRIORITY在任务等待获取低优先级的大容量更新 (BU) 锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 批量更新锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IS当某任务正在等待获取意向共享 (IS) 锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_IS_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的意向共享 (IS) 锁时出现。 (与 ALTER TABLE 和 ALTER INDEX.) 低优先级等待选项相关,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IS_LOW_PRIORITY在任务等待获取低优先级的意向共享 (IS) 锁时出现。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IU当某任务正在等待获取意向更新 (IU) 锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_IU_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的意向更新 (IU) 锁时出现。 (与 ALTER TABLE 和 ALTER INDEX.) 低优先级等待选项相关,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IU_LOW_PRIORITY在任务等待获取低优先级的意向更新 (IU) 锁时出现。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IX当某任务正在等待获取意向排他 (IX) 锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_IX_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的意向排他 (IX) 锁时出现。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_IX_LOW_PRIORITY在任务等待获取低优先级的意向排他 (IX) 锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_NL当某任务正在等待获取当前键值上的 NULL 锁以及当前键和上一个键之间的插入范围锁时出现。 键上的 NULL 锁是指立即释放的锁。
LCK_M_RIn_NL_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的 NULL 锁以及当前键和上一个键之间使用中止阻塞程序的插入范围锁时发生。 键上的 NULL 锁是指立即释放的锁。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_NL_LOW_PRIORITY在任务等待获取当前键值上低优先级的 NULL 锁以及当前键和上一个键之间低优先级的插入范围锁时发生。 键上的 NULL 锁是指立即释放的锁。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的插入范围锁时出现。
LCK_M_RIn_S_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的共享锁以及当前键和上一个键之间使用中止阻塞程序的插入范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_S_LOW_PRIORITY在任务等待获取当前键值上低优先级的共享锁以及当前键和上一个键之间低优先级的插入范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_U任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的插入范围锁。
LCK_M_RIn_U_ABORT_BLOCKERS任务等待获取当前键值上使用中止阻塞程序的更新锁以及当前键和上一个键之间使用中止阻塞程序的插入范围锁。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_U_LOW_PRIORITY任务等待获取当前键值上低优先级的更新锁以及当前键和上一个键之间低优先级的插入范围锁。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_X当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的插入范围锁时出现。
LCK_M_RIn_X_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的排他锁以及当前键和上一个键之间使用中止阻塞程序的插入范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RIn_X_LOW_PRIORITY在任务等待获取当前键值上低优先级的排他锁以及当前键和上一个键之间低优先级的插入范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RS_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的共享范围锁时出现。
LCK_M_RS_S_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的共享锁以及当前键和上一个键之间使用中止阻塞程序的共享范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RS_S_LOW_PRIORITY在任务等待获取当前键值上低优先级的共享锁以及当前键和上一个键之间低优先级的共享范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RS_U当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的更新范围锁时出现。
LCK_M_RS_U_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的更新锁以及当前键和上一个键之间使用中止阻塞程序的更新范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RS_U_LOW_PRIORITY在任务等待获取当前键值上低优先级的更新锁以及当前键和上一个键之间低优先级的更新范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的排他范围锁时出现。
LCK_M_RX_S_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的共享锁以及当前键和上一个键之间使用中止阻塞程序的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_S_LOW_PRIORITY在任务等待获取当前键值上低优先级的共享锁以及当前键和上一个键之间低优先级的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_U当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的排他范围锁时出现。
LCK_M_RX_U_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的更新锁以及当前键和上一个键之间使用中止阻塞程序的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_U_LOW_PRIORITY在任务等待获取当前键值上低优先级的更新锁以及当前键和上一个键之间低优先级的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_X当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的排他范围锁时出现。
LCK_M_RX_X_ABORT_BLOCKERS在任务等待获取当前键值上使用中止阻塞程序的排他锁以及当前键和上一个键之间使用中止阻塞程序的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_RX_X_LOW_PRIORITY在任务等待获取当前键值上低优先级的排他锁以及当前键和上一个键之间低优先级的排他范围锁时发生。 (与 ALTER TABLE 和 ALTER INDEX.) 的低优先级等待选项相关,
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_S当某任务正在等待获取共享锁时出现。 有关详细信息,请参阅 共享锁
LCK_M_S_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的共享锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 共享锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_S_LOW_PRIORITY在任务等待获取低优先级的共享锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 共享锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SCH_M当某任务正在等待获取架构修改锁时出现。 有关详细信息,请参阅 架构锁
LCK_M_SCH_M_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的架构修改锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 架构锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SCH_M_LOW_PRIORITY在任务等待获取低优先级的架构修改锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 架构锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SCH_S当某任务正在等待获取架构共享锁时出现。 有关详细信息,请参阅 架构锁
LCK_M_SCH_S_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的架构共享锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 架构锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SCH_S_LOW_PRIORITY在任务等待获取低优先级的架构共享锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关有关详细信息,请参阅 架构锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SIU当某任务正在等待获取共享意向更新锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_SIU_ABORT_BLOCKERS在任务等待获取具有中止阻塞程序的共享意向更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SIU_LOW_PRIORITY在任务等待获取低优先级的共享意向更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SIX当某任务正在等待获取共享意向排他锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_SIX_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的共享意向排他锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_SIX_LOW_PRIORITY在任务等待获取低优先级的意向排他共享锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_U当某任务正在等待获取更新锁时出现。 有关详细信息,请参阅 更新锁
LCK_M_U_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 更新锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_U_LOW_PRIORITY在任务等待获取低优先级的更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 更新锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_UIX当某任务正在等待获取更新意向排他锁时出现。 有关详细信息,请参阅 意向锁
LCK_M_UIX_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的意向排他更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_UIX_LOW_PRIORITY在任务等待获取低优先级的意向排他更新锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 意向锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_X当某任务正在等待获取排他锁时出现。 有关详细信息,请参阅 独占锁
LCK_M_X_ABORT_BLOCKERS在任务等待获取使用中止阻塞程序的排他锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 独占锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LCK_M_X_LOW_PRIORITY在任务等待获取低优先级的排他锁时发生。 (与 ALTER TABLE 和 ALTER INDEX) 的低优先级等待选项相关。 有关详细信息,请参阅 独占锁
适用于:SQL Server 2014 (12.x) 及更高版本。
LOG_POOL_SCAN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
LOG_RATE_GOVERNOR仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
LOGBUFFER当某任务正在等待日志缓冲区的空间以存储日志记录时出现。 始终较高的值可能表示日志设备无法跟上服务器生成的日志量。
LOGCAPTURE_LOGPOOLTRUNCPOINT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGGENERATION标识为仅供参考。 不支持。 不能保证将来的兼容性。
LOGMGR在数据库关闭过程中,当某任务正在等待任何未完成的日志 I/O 在关闭日志之前完成时出现。
LOGMGR_FLUSH标识为仅供参考。 不支持。 不能保证将来的兼容性。
LOGMGR_PMM_LOG仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
LOGMGR_QUEUE在日志编写器任务等待工作请求时出现。
LOGMGR_RESERVE_APPEND当某任务正在等待查看日志截断是否能释放日志空间以使该任务能写入新的日志记录时出现。 请考虑为受影响的数据库增加日志文件的大小以减少该等待时间。
LOGPOOL_CACHESIZE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOL_CONSUMER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOL_CONSUMERSET仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOL_FREEPOOLS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOL_MGRSET仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOL_REPLACEMENTSET仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOGPOOLREFCOUNTEDOBJECT_REFDONE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
LOWFAIL_MEMMGR_QUEUE在等待可用内存期间出现。
MD_AGENT_YIELD仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
MD_LAZYCACHE_RWLOCK仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
MEMORY_ALLOCATION_EXT从内部SQL Server内存池或操作系统分配内存时发生。
适用于:SQL Server 2016 (13.x) 及更高版本。
MEMORY_GRANT_UPDATE仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
METADATA_LAZYCACHE_RWLOCK仅限内部使用。
适用于:SQL Server 2008 R2 (10.50.x) 。
MIGRATIONBUFFER仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
杂项标识为仅供参考。 不支持。 不能保证将来的兼容性。
MSQL_DQ当某任务正在等待分布式查询操作完成时出现。 它用于检测潜在的多个活动的结果集 (MARS) 应用程序死锁。 该等待将在分布式查询调用完成时结束。
MSQL_XACT_MGR_MUTEX当某任务正在等待获取会话事务管理器的所有权以执行会话级别事务操作时出现。
MSQL_XACT_MUTEX在事务使用同步期间出现。 请求必须先获取互斥体才可以使用事务。
MSQL_XP当某任务正在等待扩展存储过程结束时出现。 SQL Server使用此等待状态来检测潜在的 MARS 应用程序死锁。 该等待将在扩展存储过程调用结束时停止。
MSSEARCH在全文搜索调用期间出现。 该等待在全文操作完成时结束。 它并不指示争用,而是指示全文操作的持续时间。
NET_WAITFOR_PACKET在网络读取过程中连接正在等待网络数据包时出现。
NETWORKSXMLMGRLOAD仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
NODE_CACHE_MUTEX仅限内部使用。
OLEDBSQL Server调用 SNAC OLE DB 访问接口 (SQLNCLI) 或Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) 时发生。 此等待类型不用于同步。 而是用于指示调用 OLE DB 访问接口的持续时间。
ONDEMAND_TASK_QUEUE在后台任务等待高优先级系统任务请求时出现。 较长的等待时间表示没有要处理的高优先级请求,不应引起关注。
PAGEIOLATCH_DT在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于“破坏”模式。 长时间的等待可能指示磁盘子系统出现问题。
PAGEIOLATCH_EX在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于独占模式 - 缓冲区写入磁盘时使用的模式。 长时间的等待可能指示磁盘子系统出现问题。 有关详细信息,请参阅此SQL Server I/O 缓慢故障排除博客
PAGEIOLATCH_KP在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于“保持”模式。 长时间的等待可能指示磁盘子系统出现问题。
PAGEIOLATCH_NL标识为仅供参考。 不支持。 不能保证将来的兼容性。
PAGEIOLATCH_SH在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于共享模式 - 从磁盘读取缓冲区时使用的模式。 长时间的等待可能指示磁盘子系统出现问题。 有关详细信息,请参阅 I/O 缓慢 - SQL Server和磁盘 I/O 性能
PAGEIOLATCH_UP在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于“更新”模式。 长时间的等待可能指示磁盘子系统出现问题。 有关详细信息,请参阅 I/O 缓慢 - SQL Server和磁盘 I/O 性能
PAGELATCH_DT当任务正在等待不在 I/O 请求中的缓冲区的闩锁上时发生。 闩锁请求处于“破坏”模式。 删除页面内容之前,必须获取销毁模式。 有关详细信息,请参阅 闩锁模式
PAGELATCH_EX当任务正在等待不在 I/O 请求中的缓冲区的闩锁上时发生。 闩锁请求处于独占模式 - 它阻止其他线程写入或读取页面 (缓冲区) 。 导致此闩锁的常见情况是“最后一页插入”缓冲区闩锁争用。 若要了解并解决此问题,请使用解决最后一页插入PAGELATCH_EX争用诊断和解决SQL Server的最后一页插入闩锁争用。 另一种情况是在 具有非聚集索引的小表上出现闩锁争用,并且随机插入 (队列表)
PAGELATCH_KP当任务正在等待不在 I/O 请求中的缓冲区的闩锁上时发生。 闩锁请求处于“保留”模式,这可以防止页面被另一个线程销毁。 有关详细信息,请参阅 闩锁模式
PAGELATCH_NL标识为仅供参考。 不支持。 不能保证将来的兼容性。
PAGELATCH_SH当任务正在等待不在 I/O 请求中的缓冲区的闩锁上时发生。 闩锁请求处于共享模式,允许多个线程读取缓冲区,但不允许修改缓冲区 (页) 。 有关详细信息,请参阅 闩锁模式
PAGELATCH_UP当任务正在等待不在 I/O 请求中的缓冲区的闩锁上时发生。 闩锁请求处于“更新”模式。 通常,当系统页 (缓冲区) (如 PFS、GAM、SGAM)被锁定时,可能会观察到此等待类型。 有关详细信息,请参阅 闩锁模式。 有关此闩锁的常见方案的故障排除,请参阅减少SQL Server tempdb 数据库中的分配争用
PARALLEL_BACKUP_QUEUE在序列化由 RESTORE HEADERONLY、RESTORE FILELISTONLY 或 RESTORE LABELONLY 生成的输出时出现。
PARALLEL_REDO_DRAIN_WORKER仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_FLOW_CONTROL仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_LOG_CACHE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_TRAN_LIST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_TRAN_TURN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_WORKER_SYNC仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PARALLEL_REDO_WORKER_WAIT_WORK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PERFORMANCE_COUNTERS_RWLOCK仅限内部使用。
PHYSICAL_SEEDING_DMV仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
POOL_LOG_RATE_GOVERNOR仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PREEMPTIVE_ABR标识为仅供参考。 不支持。 不能保证将来的兼容性。
PREEMPTIVE_AUDIT_ACCESS_EVENTLOG当SQL Server操作系统 (SQLOS) 计划程序切换到抢先模式以将审核事件写入 Windows 事件日志时发生。
适用于:SQL Server 2008 R2 (10.50.x) 。
PREEMPTIVE_AUDIT_ACCESS_SECLOG在 SQLOS 计划程序切换到抢先模式时发生,以便将审核事件写入 Windows 安全日志。
适用于:SQL Server 2008 R2 (10.50.x) 。
PREEMPTIVE_CLOSEBACKUPMEDIA在 SQLOS 计划程序切换到抢先模式时发生,以便关闭备份介质。
PREEMPTIVE_CLOSEBACKUPTAPE在 SQLOS 计划程序切换到抢先模式时发生,以便关闭磁带备份设备。
PREEMPTIVE_CLOSEBACKUPVDIDEVICE在 SQLOS 计划程序切换到抢先模式时发生,以便关闭虚拟备份设备。
PREEMPTIVE_CLUSAPI_CLUSTERRESOURCECONTROL在 SQLOS 计划程序切换到抢先模式时发生,以便执行故障转移群集操作。
PREEMPTIVE_COM_COCREATEINSTANCE在 SQLOS 计划程序切换到抢先模式时发生,以便创建 COM 对象。
PREEMPTIVE_COM_COGETCLASSOBJECT仅限内部使用。
PREEMPTIVE_COM_CREATEACCESSOR仅限内部使用。
PREEMPTIVE_COM_DELETEROWS仅限内部使用。
PREEMPTIVE_COM_GETCOMMANDTEXT仅限内部使用。
PREEMPTIVE_COM_GETDATA仅限内部使用。
PREEMPTIVE_COM_GETNEXTROWS仅限内部使用。
PREEMPTIVE_COM_GETRESULT仅限内部使用。
PREEMPTIVE_COM_GETROWSBYBOOKMARK仅限内部使用。
PREEMPTIVE_COM_LBFLUSH仅限内部使用。
PREEMPTIVE_COM_LBLOCKREGION仅限内部使用。
PREEMPTIVE_COM_LBREADAT仅限内部使用。
PREEMPTIVE_COM_LBSETSIZE仅限内部使用。
PREEMPTIVE_COM_LBSTAT仅限内部使用。
PREEMPTIVE_COM_LBUNLOCKREGION仅限内部使用。
PREEMPTIVE_COM_LBWRITEAT仅限内部使用。
PREEMPTIVE_COM_QUERYINTERFACE仅限内部使用。
PREEMPTIVE_COM_RELEASE仅限内部使用。
PREEMPTIVE_COM_RELEASEACCESSOR仅限内部使用。
PREEMPTIVE_COM_RELEASEROWS仅限内部使用。
PREEMPTIVE_COM_RELEASESESSION仅限内部使用。
PREEMPTIVE_COM_RESTARTPOSITION仅限内部使用。
PREEMPTIVE_COM_SEQSTRMREAD仅限内部使用。
PREEMPTIVE_COM_SEQSTRMREADANDWRITE仅限内部使用。
PREEMPTIVE_COM_SETDATAFAILURE仅限内部使用。
PREEMPTIVE_COM_SETPARAMETERINFO仅限内部使用。
PREEMPTIVE_COM_SETPARAMETERPROPERTIES仅限内部使用。
PREEMPTIVE_COM_STRMLOCKREGION仅限内部使用。
PREEMPTIVE_COM_STRMSEEKANDREAD仅限内部使用。
PREEMPTIVE_COM_STRMSEEKANDWRITE仅限内部使用。
PREEMPTIVE_COM_STRMSETSIZE仅限内部使用。
PREEMPTIVE_COM_STRMSTAT仅限内部使用。
PREEMPTIVE_COM_STRMUNLOCKREGION仅限内部使用。
PREEMPTIVE_CONSOLEWRITE仅限内部使用。
PREEMPTIVE_CREATEPARAM仅限内部使用。
PREEMPTIVE_DEBUG仅限内部使用。
PREEMPTIVE_DFSADDLINK仅限内部使用。
PREEMPTIVE_DFSLINKEXISTCHECK仅限内部使用。
PREEMPTIVE_DFSLINKHEALTHCHECK仅限内部使用。
PREEMPTIVE_DFSREMOVELINK仅限内部使用。
PREEMPTIVE_DFSREMOVEROOT仅限内部使用。
PREEMPTIVE_DFSROOTFOLDERCHECK仅限内部使用。
PREEMPTIVE_DFSROOTINIT仅限内部使用。
PREEMPTIVE_DFSROOTSHARECHECK仅限内部使用。
PREEMPTIVE_DTC_ABORT仅限内部使用。
PREEMPTIVE_DTC_ABORTREQUESTDONE仅限内部使用。
PREEMPTIVE_DTC_BEGINTRANSACTION仅限内部使用。
PREEMPTIVE_DTC_COMMITREQUESTDONE仅限内部使用。
PREEMPTIVE_DTC_ENLIST仅限内部使用。
PREEMPTIVE_DTC_PREPAREREQUESTDONE仅限内部使用。
PREEMPTIVE_FILESIZEGET仅限内部使用。
PREEMPTIVE_FSAOLEDB_ABORTTRANSACTION仅限内部使用。
PREEMPTIVE_FSAOLEDB_COMMITTRANSACTION仅限内部使用。
PREEMPTIVE_FSAOLEDB_STARTTRANSACTION仅限内部使用。
PREEMPTIVE_FSRECOVER_UNCONDITIONALUNDO仅限内部使用。
PREEMPTIVE_GETRMINFO仅限内部使用。
PREEMPTIVE_HADR_LEASE_MECHANISMAlways On可用性组租用管理器计划,用于Microsoft 支持部门诊断。
适用于:SQL Server 2012 (11.x) 及更高版本。
PREEMPTIVE_HTTP_EVENT_WAIT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PREEMPTIVE_HTTP_REQUEST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PREEMPTIVE_LOCKMONITOR仅限内部使用。
PREEMPTIVE_MSS_RELEASE仅限内部使用。
PREEMPTIVE_ODBCOPS仅限内部使用。
PREEMPTIVE_OLE_UNINIT仅限内部使用。
PREEMPTIVE_OLEDB_ABORTORCOMMITTRAN仅限内部使用。
PREEMPTIVE_OLEDB_ABORTTRAN仅限内部使用。
PREEMPTIVE_OLEDB_GETDATASOURCE仅限内部使用。
PREEMPTIVE_OLEDB_GETLITERALINFO仅限内部使用。
PREEMPTIVE_OLEDB_GETPROPERTIES仅限内部使用。
PREEMPTIVE_OLEDB_GETPROPERTYINFO仅限内部使用。
PREEMPTIVE_OLEDB_GETSCHEMALOCK仅限内部使用。
PREEMPTIVE_OLEDB_JOINTRANSACTION仅限内部使用。
PREEMPTIVE_OLEDB_RELEASE仅限内部使用。
PREEMPTIVE_OLEDB_SETPROPERTIES仅限内部使用。
PREEMPTIVE_OLEDBOPS仅限内部使用。
PREEMPTIVE_OS_ACCEPTSECURITYCONTEXT仅限内部使用。
PREEMPTIVE_OS_ACQUIRECREDENTIALSHANDLE仅限内部使用。
PREEMPTIVE_OS_AUTHENTICATIONOPS仅限内部使用。
PREEMPTIVE_OS_AUTHORIZATIONOPS仅限内部使用。
PREEMPTIVE_OS_AUTHZGETINFORMATIONFROMCONTEXT仅限内部使用。
PREEMPTIVE_OS_AUTHZINITIALIZECONTEXTFROMSID仅限内部使用。
PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER仅限内部使用。
PREEMPTIVE_OS_BACKUPREAD仅限内部使用。
PREEMPTIVE_OS_CLOSEHANDLE仅限内部使用。
PREEMPTIVE_OS_CLUSTEROPS仅限内部使用。
PREEMPTIVE_OS_COMOPS仅限内部使用。
PREEMPTIVE_OS_COMPLETEAUTHTOKEN仅限内部使用。
PREEMPTIVE_OS_COPYFILE仅限内部使用。
PREEMPTIVE_OS_CREATEDIRECTORY仅限内部使用。
PREEMPTIVE_OS_CREATEFILE仅限内部使用。
PREEMPTIVE_OS_CRYPTACQUIRECONTEXT仅限内部使用。
PREEMPTIVE_OS_CRYPTIMPORTKEY仅限内部使用。
PREEMPTIVE_OS_CRYPTOPS仅限内部使用。
PREEMPTIVE_OS_DECRYPTMESSAGE仅限内部使用。
PREEMPTIVE_OS_DELETEFILE仅限内部使用。
PREEMPTIVE_OS_DELETESECURITYCONTEXT仅限内部使用。
PREEMPTIVE_OS_DEVICEIOCONTROL仅限内部使用。
PREEMPTIVE_OS_DEVICEOPS仅限内部使用。
PREEMPTIVE_OS_DIRSVC_NETWORKOPS仅限内部使用。
PREEMPTIVE_OS_DISCONNECTNAMEDPIPE仅限内部使用。
PREEMPTIVE_OS_DOMAINSERVICESOPS仅限内部使用。
PREEMPTIVE_OS_DSGETDCNAME仅限内部使用。
PREEMPTIVE_OS_DTCOPS仅限内部使用。
PREEMPTIVE_OS_ENCRYPTMESSAGE仅限内部使用。
PREEMPTIVE_OS_FILEOPS仅限内部使用。
PREEMPTIVE_OS_FINDFILE仅限内部使用。
PREEMPTIVE_OS_FLUSHFILEBUFFERS仅限内部使用。
PREEMPTIVE_OS_FORMATMESSAGE仅限内部使用。
PREEMPTIVE_OS_FREECREDENTIALSHANDLE仅限内部使用。
PREEMPTIVE_OS_FREELIBRARY仅限内部使用。
PREEMPTIVE_OS_GENERICOPS仅限内部使用。
PREEMPTIVE_OS_GETADDRINFO仅限内部使用。
PREEMPTIVE_OS_GETCOMPRESSEDFILESIZE仅限内部使用。
PREEMPTIVE_OS_GETDISKFREESPACE仅限内部使用。
PREEMPTIVE_OS_GETFILEATTRIBUTES仅限内部使用。
PREEMPTIVE_OS_GETFILESIZE仅限内部使用。
PREEMPTIVE_OS_GETFINALFILEPATHBYHANDLE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PREEMPTIVE_OS_GETLONGPATHNAME仅限内部使用。
PREEMPTIVE_OS_GETPROCADDRESS仅限内部使用。
PREEMPTIVE_OS_GETVOLUMENAMEFORVOLUMEMOUNTPOINT仅限内部使用。
PREEMPTIVE_OS_GETVOLUMEPATHNAME仅限内部使用。
PREEMPTIVE_OS_INITIALIZESECURITYCONTEXT仅限内部使用。
PREEMPTIVE_OS_LIBRARYOPS仅限内部使用。
PREEMPTIVE_OS_LOADLIBRARY仅限内部使用。
PREEMPTIVE_OS_LOGONUSER仅限内部使用。
PREEMPTIVE_OS_LOOKUPACCOUNTSID仅限内部使用。
PREEMPTIVE_OS_MESSAGEQUEUEOPS仅限内部使用。
PREEMPTIVE_OS_MOVEFILE仅限内部使用。
PREEMPTIVE_OS_NETGROUPGETUSERS仅限内部使用。
PREEMPTIVE_OS_NETLOCALGROUPGETMEMBERS仅限内部使用。
PREEMPTIVE_OS_NETUSERGETGROUPS仅限内部使用。
PREEMPTIVE_OS_NETUSERGETLOCALGROUPS仅限内部使用。
PREEMPTIVE_OS_NETUSERMODALSGET仅限内部使用。
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICY仅限内部使用。
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREE仅限内部使用。
PREEMPTIVE_OS_OPENDIRECTORY仅限内部使用。
PREEMPTIVE_OS_PDH_WMI_INIT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PREEMPTIVE_OS_PIPEOPS仅限内部使用。
PREEMPTIVE_OS_PROCESSOPS仅限内部使用。
PREEMPTIVE_OS_QUERYCONTEXTATTRIBUTES仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PREEMPTIVE_OS_QUERYREGISTRY仅限内部使用。
PREEMPTIVE_OS_QUERYSECURITYCONTEXTTOKEN仅限内部使用。
PREEMPTIVE_OS_REMOVEDIRECTORY仅限内部使用。
PREEMPTIVE_OS_REPORTEVENT仅限内部使用。
PREEMPTIVE_OS_REVERTTOSELF仅限内部使用。
PREEMPTIVE_OS_RSFXDEVICEOPS仅限内部使用。
PREEMPTIVE_OS_SECURITYOPS仅限内部使用。
PREEMPTIVE_OS_SERVICEOPS仅限内部使用。
PREEMPTIVE_OS_SETENDOFFILE仅限内部使用。
PREEMPTIVE_OS_SETFILEPOINTER仅限内部使用。
PREEMPTIVE_OS_SETFILEVALIDDATA仅限内部使用。
PREEMPTIVE_OS_SETNAMEDSECURITYINFO仅限内部使用。
PREEMPTIVE_OS_SQLCLROPS仅限内部使用。
PREEMPTIVE_OS_SQMLAUNCH仅限内部使用。
适用于:SQL Server 2008 R2 (10.50.x) 到 SQL Server 2016 (13.x) 。
PREEMPTIVE_OS_VERIFYSIGNATURE仅限内部使用。
PREEMPTIVE_OS_VERIFYTRUST仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PREEMPTIVE_OS_VSSOPS仅限内部使用。
PREEMPTIVE_OS_WAITFORSINGLEOBJECT仅限内部使用。
PREEMPTIVE_OS_WINSOCKOPS仅限内部使用。
PREEMPTIVE_OS_WRITEFILE仅限内部使用。
PREEMPTIVE_OS_WRITEFILEGATHER仅限内部使用。
PREEMPTIVE_OS_WSASETLASTERROR仅限内部使用。
PREEMPTIVE_REENLIST仅限内部使用。
PREEMPTIVE_RESIZELOG仅限内部使用。
PREEMPTIVE_ROLLFORWARDREDO仅限内部使用。
PREEMPTIVE_ROLLFORWARDUNDO仅限内部使用。
PREEMPTIVE_SB_STOPENDPOINT仅限内部使用。
PREEMPTIVE_SERVER_STARTUP仅限内部使用。
PREEMPTIVE_SETRMINFO仅限内部使用。
PREEMPTIVE_SHAREDMEM_GETDATA仅限内部使用。
PREEMPTIVE_SNIOPEN仅限内部使用。
PREEMPTIVE_SOSHOST仅限内部使用。
PREEMPTIVE_SOSTESTING标识为仅供参考。 不支持。 无法保证将来的兼容性。
PREEMPTIVE_SP_SERVER_DIAGNOSTICS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PREEMPTIVE_STARTRM仅限内部使用。
PREEMPTIVE_STREAMFCB_CHECKPOINT仅限内部使用。
PREEMPTIVE_STREAMFCB_RECOVER仅限内部使用。
PREEMPTIVE_STRESSDRIVER标识为仅供参考。 不支持。 无法保证将来的兼容性。
PREEMPTIVE_TESTING标识为仅供参考。 不支持。 无法保证将来的兼容性。
PREEMPTIVE_TRANSIMPORT仅限内部使用。
PREEMPTIVE_UNMARSHALPROPAGATIONTOKEN仅限内部使用。
PREEMPTIVE_VSS_CREATESNAPSHOT仅限内部使用。
PREEMPTIVE_VSS_CREATEVOLUMESNAPSHOT仅限内部使用。
PREEMPTIVE_XE_CALLBACKEXECUTE仅限内部使用。
PREEMPTIVE_XE_CX_FILE_OPEN仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PREEMPTIVE_XE_CX_HTTP_CALL仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PREEMPTIVE_XE_DISPATCHER仅限内部使用。
PREEMPTIVE_XE_ENGINEINIT仅限内部使用。
PREEMPTIVE_XE_GETTARGETSTATE仅限内部使用。
PREEMPTIVE_XE_SESSIONCOMMIT仅限内部使用。
PREEMPTIVE_XE_TARGETFINALIZE仅限内部使用。
PREEMPTIVE_XE_TARGETINIT仅限内部使用。
PREEMPTIVE_XE_TIMERRUN仅限内部使用。
PREEMPTIVE_XETESTING标识为仅供参考。 不支持。 无法保证将来的兼容性。
PRINT_ROLLBACK_PROGRESS用于等待用户进程在已通过 ALTER DATABASE 终止子句完成转换的数据库中结束。 有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)。
PRU_ROLLBACK_DEFERRED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_ALL_COMPONENTS_INITIALIZED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_COOP_SCAN仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_DIRECTLOGCONSUMER_GETNEXT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PWAIT_EVENT_SESSION_INIT_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_FABRIC_REPLICA_CONTROLLER_DATA_LOSS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PWAIT_HADR_ACTION_COMPLETED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_CHANGE_NOTIFIER_TERMINATION_SYNC在后台任务正在等待终止接收(通过轮询)Windows Server 故障转移群集通知的后台任务时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_CLUSTER_INTEGRATION追加、替换和/或删除操作正在等待获取Always On内部列表 ((例如网络列表、网络地址列表或可用性组侦听器) )上的写入锁定。 仅限内部使用,
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_FAILOVER_COMPLETED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_JOIN仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PWAIT_HADR_OFFLINE_COMPLETEDAlways On删除可用性组操作正在等待目标可用性组脱机,然后销毁 Windows Server 故障转移群集对象。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_ONLINE_COMPLETEDAlways On创建或故障转移可用性组操作正在等待目标可用性组联机。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_POST_ONLINE_COMPLETEDAlways On删除可用性组操作正在等待作为上一命令的一部分计划的任何后台任务的终止。 例如,可能有正在将可用性数据库转换为主要角色的后台任务。 DROP AVAILABILITY GROUP DDL 必须等待此后台任务终止,以免出现争用情况。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_SERVER_READY_CONNECTIONS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADR_WORKITEM_COMPLETED正在等待异步工作任务完成,这是线程执行的内部等待。 这是预期的等待,用于 CSS。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_HADRSIM仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
PWAIT_LOG_CONSOLIDATION_IO仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PWAIT_LOG_CONSOLIDATION_POLL仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PWAIT_MD_LOGIN_STATS在登录统计信息的元数据内部同步期间发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_MD_RELATION_CACHE在表或索引的元数据内部同步期间发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_MD_SERVER_CACHE在链接服务器的元数据内部同步期间发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_MD_UPGRADE_CONFIG在升级服务器范围的配置时进行内部同步期间发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_PREEMPTIVE_APP_USAGE_TIMER仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
PWAIT_PREEMPTIVE_AUDIT_ACCESS_WINDOWSLOG仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_QRY_BPMEMORY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_REPLICA_ONLINE_INIT_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNC仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
PWAIT_SBS_FILE_OPERATION仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
PWAIT_XTP_FSSTORAGE_MAINTENANCE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
PWAIT_XTP_HOST_STORAGE_WAIT仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_ASYNC_CHECK_CONSISTENCY_TASK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_ASYNC_PERSIST_TASK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_ASYNC_PERSIST_TASK_START仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_ASYNC_QUEUE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
QDS_BCKG_TASK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_BLOOM_FILTER仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_CTXS仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_DB_DISK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_DYN_VECTOR仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_EXCLUSIVE_ACCESS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
QDS_HOST_INIT仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
QDS_LOADDB仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_PERSIST_TASK_MAIN_LOOP_SLEEP仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_QDS_CAPTURE_INIT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
QDS_SHUTDOWN_QUEUE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_STMT仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_STMT_DISK仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_TASK_SHUTDOWN仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QDS_TASK_START仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QE_WARN_LIST_SYNC仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
QPJOB_KILL指示异步统计信息自动更新在开始运行时通过调用 KILL 命令而取消。 终止线程处于挂起状态,等待它开始侦听 KILL 命令。 正常情况下,该值不到一秒钟。
QPJOB_WAITFOR_ABORT指示异步统计信息自动更新在运行时通过调用 KILL 命令而取消。 目前更新已完成,但是在终止线程消息协调完成之前一直于挂起状态。 这是一个普通而少见的状态,应当非常短暂。 正常情况下,该值不到一秒钟。
QRY_MEM_GRANT_INFO_MUTEX当查询执行内存管理尝试控制对静态授予信息列表的访问时出现。 该状态列出当前已批准的内存请求以及正在等待的内存请求的有关信息。 该状态是一个简单的访问控制状态。 该状态始终不应当等待较长的时间。 如果未释放此互斥体,则所有新的内存使用查询都将停止响应。
QRY_PARALLEL_THREAD_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
QRY_PROFILE_LIST_MUTEX仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
QUERY_ERRHDL_SERVICE_DONE标识为仅供参考。 不支持。 仅适用于:SQL Server 2008 R2 (10.50.x) 。
QUERY_WAIT_ERRHDL_SERVICE标识为仅供参考。 不支持。 仅适用于:SQL Server 2008 R2 (10.50.x) 。
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_TASK_ENQUEUE_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
QUERY_TRACEOUT标识为仅供参考。 不支持。 不能保证将来的兼容性。
RBIO_WAIT_VLF仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
RBIO_RG_STORAGE当“超大规模”数据库计算节点由于页服务器 () 的日志消耗延迟而受到限制时发生。
适用于:Azure SQL数据库超大规模。
RBIO_RG_DESTAGE当超大规模数据库计算节点由于长期日志存储延迟使用日志而受到限制时发生。
适用于:Azure SQL数据库超大规模。
RBIO_RG_REPLICA当“超大规模”数据库计算节点由于可读辅助副本节点 () 的日志消耗延迟而受到限制时发生。
适用于:Azure SQL数据库超大规模。
RBIO_RG_LOCALDESTAGE当超大规模数据库计算节点由于日志服务延迟使用而受到限制时发生。
适用于:Azure SQL数据库超大规模。
RECOVER_CHANGEDB在备用数据库中同步数据库状态期间出现。
RECOVERY_MGR_LOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
REDO_THREAD_PENDING_WORK仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
REDO_THREAD_SYNC仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
REMOTE_BLOCK_IO仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
REMOTE_DATA_ARCHIVE_MIGRATION_DMV仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
REMOTE_DATA_ARCHIVE_SCHEMA_DMV仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
REMOTE_DATA_ARCHIVE_SCHEMA_TASK_QUEUE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
REPL_CACHE_ACCESS在同步复制项目缓存的期间出现。 在这些等待期间,复制日志读取器将停止,已发布表中的数据定义语言 (DDL) 语句也将被阻止。
REPL_HISTORYCACHE_ACCESS仅限内部使用。
REPL_SCHEMA_ACCESS在同步复制架构版本信息的期间出现。 该状态在下列情况下存在:针对复制对象执行 DDL 语句时,以及日志读取器根据 DDL 出现次数生成或使用版本控制架构时。 如果单个发布服务器上有许多具有事务复制的已发布数据库,并且已发布的数据库非常活跃,则可以在此等待类型上看到争用。
REPL_TRANFSINFO_ACCESS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
REPL_TRANHASHTABLE_ACCESS仅限内部使用。
REPL_TRANTEXTINFO_ACCESS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
REPLICA_WRITES在任务等待将页写入数据库快照或 DBCC 副本的操作完成时出现。
REQUEST_DISPENSER_PAUSE在任务等待所有未完成的 I/O 完成时出现,以便可以为快照备份冻结文件的 I/O。
REQUEST_FOR_DEADLOCK_SEARCH在死锁监视器等待开始下一次死锁搜索时出现。 在死锁检测之间预期会出现此等待,而此资源的总等待时间过长并不表示存在问题。
RESERVED_MEMORY_ALLOCATION_EXT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
RESMGR_THROTTLED在有新请求传入并且基于 GROUP_MAX_REQUESTS 设置而中止时出现。
RESOURCE_GOVERNOR_IDLE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
RESOURCE_QUEUE在同步不同的内部资源队列期间出现。
RESOURCE_SEMAPHORE当查询执行期间由于其他并发查询而无法立即授予查询内存请求时发生。 等待时间较长或等待次数较多可能指示并发查询的数量过多或内存请求的数量过多。 此类型的过度等待可能会引发 SQL 错误 8645,“等待内存资源执行查询时发生超时。 重新运行查询。” 有关内存授予等待的详细信息和故障排除思路,请参阅内存授予:具有多个名称的神秘SQL Server内存使用者
RESOURCE_SEMAPHORE_MUTEX在查询等待其预留线程的请求完成时出现。 它也在同步查询编译和内存授予请求时出现。
RESOURCE_SEMAPHORE_QUERY_COMPILE在并发查询编译的数量达到中止限制时出现。 等待和等待时间过长可能表示编译过多、重新编译或计划不可缓存。
RESOURCE_SEMAPHORE_SMALL_QUERY当由于其他并发查询而无法立即授予小型查询的内存请求时发生。 等待时间不应超过几秒钟,因为服务器会将请求传输到主查询内存池(如果服务器未能在几秒钟内授予请求的内存)。 等待时间较长可能指示当主内存池被等待的查询阻塞时并发小查询的数量过多。
适用于:SQL Server 2008 R2 (10.50.x) 。
RESTORE_FILEHANDLECACHE_ENTRYLOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
RESTORE_FILEHANDLECACHE_LOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
RG_RECONFIG仅限内部使用。
ROWGROUP_OP_STATS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
ROWGROUP_VERSION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
RTDATA_LIST仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
SATELLITE_CARGO仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SATELLITE_SERVICE_SETUP仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SATELLITE_TASK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SBS_DISPATCH仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
SBS_RECEIVE_TRANSPORT仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
SBS_TRANSPORT仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
SCAN_CHAR_HASH_ARRAY_INITIALIZATION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SEC_DROP_TEMP_KEY在尝试删除临时安全密钥失败之后并在重试之前出现。
SECURITY_CNG_PROVIDER_MUTEX仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
SECURITY_CRYPTO_CONTEXT_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SECURITY_DBE_STATE_MUTEX仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SECURITY_KEYRING_RWLOCK仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SECURITY_MUTEX当等待互斥体时出现,这些互斥体控制对可扩展的密钥管理 (EKM) 加密提供程序的全局列表以及 EKM 会话的会话作用域列表的访问。
SECURITY_RULETABLE_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SEMPLAT_DSI_BUILD仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SEQUENCE_GENERATION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SEQUENTIAL_GUID当正在获取新的连续 GUID 时出现。
SERVER_IDLE_CHECK当资源监视器尝试将SQL Server实例声明为空闲或尝试唤醒时,在同步SQL Server实例空闲状态期间发生。
SERVER_RECONFIGURE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SESSION_WAIT_STATS_CHILDREN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SHARED_DELTASTORE_CREATION仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SHUTDOWN在关闭语句等待活动连接退出时出现。
SLEEP_BPOOL_FLUSH当检查点为了避免磁盘子系统泛滥而中止新 I/O 的发布时出现。
SLEEP_BUFFERPOOL_HELPLW仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SLEEP_DBSTARTUP在等待所有数据库恢复时数据库的启动期间出现。
SLEEP_DCOMSTARTUP在等待 DCOM 初始化完成SQL Server实例启动期间最多发生一次。
SLEEP_MASTERDBREADY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SLEEP_MASTERMDREADY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SLEEP_MASTERUPGRADED仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SLEEP_MEMORYPOOL_ALLOCATEPAGES仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SLEEP_MSDBSTARTUP在 SQL 跟踪等待 msdb 数据库完成启动时出现。
SLEEP_RETRY_VIRTUALALLOC仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SLEEP_SYSTEMTASK在等待 tempdb 完成启动时后台任务的启动期间出现。
SLEEP_TASK当任务在等待一般事件出现期间睡眠时出现。
SLEEP_TEMPDBSTARTUP在任务等待 tempdb 完成启动时出现。
SLEEP_WORKSPACE_ALLOCATEPAGE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SLO_UPDATE仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
SMSYNC仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SNI_CONN_DUP仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
SNI_CRITICAL_SECTION在SQL Server网络组件内部同步期间发生。
SNI_HTTP_WAITFOR_0_DISCON在SQL Server关闭期间发生,同时等待未完成的 HTTP 连接退出。
SNI_LISTENER_ACCESS当等待非一致性内存访问 (NUMA) 节点更新状态更改时出现。 已序列化对状态更改的访问。
SNI_TASK_COMPLETION当在 NUMA 节点状态更改期间等待所有任务完成时出现。
SNI_WRITE_ASYNC仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
SOAP_READ在等待 HTTP 网络读取完成时出现。
SOAP_WRITE在等待 HTTP 网络写入完成时出现。
SOCKETDUPLICATEQUEUE_CLEANUP仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
SOS_CALLBACK_REMOVAL在为了删除回调而对回调列表执行同步期间出现。 服务器初始化完成后,此计数器不会更改。
SOS_DISPATCHER_MUTEX在调度程序池进行内部同步期间出现。 包括调整该池时。
SOS_LOCALALLOCATORLIST在内存管理器SQL Server内部同步期间发生。
适用于:SQL Server 2008 R2 (10.50.x) 。
SOS_MEMORY_TOPLEVELBLOCKALLOCATOR仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SOS_MEMORY_USAGE_ADJUSTMENT在池之间调整内存使用情况时出现。
SOS_OBJECT_STORE_DESTROY_MUTEX当破坏池中的对象时在内存池中进行内部同步期间出现。
SOS_PHYS_PAGE_CACHE考虑到线程等待获得互斥体的时间,它必须在分配物理页前或将这些页返回操作系统前获得。 只有在 SQL Server 的实例使用 AWE 内存时,才会出现这种类型的等待。
适用于:SQL Server 2012 (11.x) 及更高版本。
SOS_PROCESS_AFFINITY_MUTEX在同步访问进程关联设置期间出现。
SOS_RESERVEDMEMBLOCKLIST在内存管理器SQL Server内部同步期间发生。
适用于:SQL Server 2008 R2 (10.50.x) 。
SOS_SCHEDULER_YIELD在任务自愿为要执行的其他任务生成计划程序时出现。 在此等待期间,任务在可运行队列中等待其量子续订,即等待计划再次在 CPU 上运行。 此等待类型的长时间等待最常表示有机会优化执行索引或表扫描的查询。 专注于计划回归、缺少索引、统计信息更新和查询重写。 优化运行时可减少多次生成任务的需求。 如果此类 CPU 消耗任务的查询时间是可接受的,则此等待类型是预期的,可以忽略。
SOS_SMALL_PAGE_ALLOC在分配和释放由某些内存对象管理的内存时出现。
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)等待任务完成时出现。
SP_PREEMPTIVE_SERVER_DIAGNOSTICS_SLEEP仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SP_SERVER_DIAGNOSTICS_BUFFER_ACCESS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SP_SERVER_DIAGNOSTICS_INIT_MUTEX仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SP_SERVER_DIAGNOSTICS_SLEEP仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLCLR_APPDOMAIN在 CLR 等待应用程序域完成启动时出现。
SQLCLR_ASSEMBLY在等待访问 appdomain 中已加载的程序集列表时出现。
SQLCLR_DEADLOCK_DETECTION在 CLR 等待死锁检测完成时出现。
SQLCLR_QUANTUM_PUNISHMENT在 CLR 任务由于已经超过了其执行量程而中止时出现。 此中止已完成,以便减小此大量消耗资源的任务对其他任务的影响。
SQLSORT_NORMMUTEX在初始化内部排序结构时进行内部同步期间出现。
SQLSORT_SORTMUTEX在初始化内部排序结构时进行内部同步期间出现。
SQLTRACE_BUFFER_FLUSH当某任务正在等待后台任务将跟踪缓冲区每隔四秒刷新到磁盘时出现。 仅适用于:SQL Server 2008 R2 (10.50.x) 。
SQLTRACE_FILE_BUFFER在文件跟踪过程中同步跟踪缓冲区期间出现。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLTRACE_FILE_READ_IO_COMPLETION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLTRACE_FILE_WRITE_IO_COMPLETION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLTRACE_INCREMENTAL_FLUSH_SLEEP仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLTRACE_LOCK仅限内部使用。 仅适用于:SQL Server 2008 R2 (10.50.x) 。
SQLTRACE_PENDING_BUFFER_WRITERS仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
SQLTRACE_SHUTDOWN在跟踪关闭等待未完成的跟踪事件完成时出现。
SQLTRACE_WAIT_ENTRIES在 SQL 跟踪事件队列等待数据包到达队列时出现。
SRVPROC_SHUTDOWN在关闭进程等待释放内部资源以干净关闭时发生。
STARTUP_DEPENDENCY_MANAGER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
TDS_BANDWIDTH_STATE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
TDS_INIT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
TDS_PROXY_CONTAINER仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
TEMPOBJ在临时对象删除同步时出现。 该等待很少出现,仅在任务已请求 temp 表的独占访问删除时出现。
TEMPORAL_BACKGROUND_PROCEED_CLEANUP仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
TERMINATE_LISTENER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
THREADPOOL当 (查询或登录/注销的任务) 正在等待工作线程执行它时发生。 这表示 最大工作线程设置 配置错误,或者批处理执行通常耗时过长,从而减少可用于满足其他批处理的工作线程数。 ) 检查批处理 (查询的性能,并通过减少瓶颈 (阻塞、并行度、I/O、闩锁等待) 或提供正确的索引编制或查询设计来缩短查询持续时间。
TIMEPRIV_TIMEPERIOD在扩展事件计时器进行内部同步期间出现。
TRACE_EVTNOTIF仅限内部使用。
TRACEWRITE当 SQL 跟踪行集跟踪提供程序等待可用缓冲区或可处理事件的缓冲区时出现。
TRAN_MARKLATCH_DT在等待事务标记闩锁中的破坏模式闩锁时出现。 事务标记闩锁用于同步提交与标记的事务。
TRAN_MARKLATCH_EX在等待标记事务中的排他模式闩锁时出现。 事务标记闩锁用于同步提交与标记的事务。
TRAN_MARKLATCH_KP在等待标记事务中的保持模式闩锁时出现。 事务标记闩锁用于同步提交与标记的事务。
TRAN_MARKLATCH_NL标识为仅供参考。 不支持。 不能保证将来的兼容性。
TRAN_MARKLATCH_SH在等待标记事务中的共享模式闩锁时出现。 事务标记闩锁用于同步提交与标记的事务。
TRAN_MARKLATCH_UP在等待标记事务中的更新模式闩锁时出现。 事务标记闩锁用于同步提交与标记的事务。
TRANSACTION_MUTEX在同步多个批处理访问事务期间出现。
UCS_ENDPOINT_CHANGE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UCS_MANAGER仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UCS_MEMORY_NOTIFICATION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UCS_SESSION_REGISTRATION仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UCS_TRANSPORT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UCS_TRANSPORT_STREAM_CHANGE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
UTIL_PAGE_ALLOC在内存不足期间事务日志扫描等待可用内存时出现。
VDI_CLIENT_COMPLETECOMMAND仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
VDI_CLIENT_GETCOMMAND仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
VDI_CLIENT_OPERATION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
VDI_CLIENT_OTHER仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
VERSIONING_COMMITTING仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
VIA_ACCEPT当在启动过程中完成虚拟接口适配器 (VIA) 提供程序连接时出现。
VIEW_DEFINITION_MUTEX在同步访问已缓存的视图定义期间出现。
WAIT_FOR_RESULTS在等待查询通知触发时出现。
WAIT_ON_SYNC_STATISTICS_REFRESH在查询编译和执行可以恢复之前等待同步统计信息更新完成时发生。 适用对象:自 SQL Server 2019 (15.x) 起
WAIT_SCRIPTDEPLOYMENT_REQUEST仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_SCRIPTDEPLOYMENT_WORKER仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XLOGREAD_SIGNAL仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
WAIT_XTP_ASYNC_TX_COMPLETION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_CKPT_AGENT_WAKEUP仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_CKPT_CLOSE当等待检查点完成时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_CKPT_ENABLED当检查点已禁用并且正在等待启用检查点时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_CKPT_STATE_LOCK当同步对检查点状态的检查时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_COMPILE_WAIT仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
WAIT_XTP_GUEST当数据库内存分配器需要停止接收内存不足通知时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
WAIT_XTP_HOST_WAIT当数据库引擎触发等待并且主机实现等待时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_OFFLINE_CKPT_BEFORE_REDO仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_OFFLINE_CKPT_LOG_IO当脱机检查点等待日志读取 IO 完成时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_OFFLINE_CKPT_NEW_LOG当脱机检查点等待新日志记录扫描时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_PROCEDURE_ENTRY当删除过程等待该过程的所有当前执行完成时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_RECOVERY在数据库恢复等待内存优化对象的恢复完成时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAIT_XTP_SERIAL_RECOVERY仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
WAIT_XTP_SWITCH_TO_INACTIVE仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
WAIT_XTP_TASK_SHUTDOWN当等待内存中 OLTP 进程完成时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。
WAIT_XTP_TRAN_DEPENDENCY当等待事务依赖关系时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
WAITFOR作为 WAITFOR Transact-SQL 语句的结果发生。 等待持续时间由此语句的参数确定。 它是用户启动的等待。
WAITFOR_PER_QUEUE仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
WAITFOR_TASKSHUTDOWN标识为仅供参考。 不支持。 不能保证将来的兼容性。
WAITSTAT_MUTEX在同步访问用于填充 sys.dm_os_wait_stats 的统计信息集期间出现。
WCC标识为仅供参考。 不支持。 不能保证将来的兼容性。
WINDOW_AGGREGATES_MULTIPASS仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
WINFAB_API_CALL仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WINFAB_REPLICA_BUILD_OPERATION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
WINFAB_REPORT_FAULT仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
WORKTBL_DROP在删除出现故障的工作表之后,重试之前的暂停期间出现。
WRITE_COMPLETION当正在进行写操作时出现。
WRITELOG等待日志刷新完成时出现。 导致日志刷新的常见操作是事务提交和检查点。 在 WRITELOG 上长时间等待的常见原因包括:事务日志文件驻留) 的磁盘延迟 (、I/O 无法跟上事务,或者大量事务日志操作和刷新 (提交、回滚)
XACT_OWN_TRANSACTION在等待获取事务的所有权时出现。
XACT_RECLAIM_SESSION在等待会话的当前所有者释放会话的所有权时出现。
XACTLOCKINFO在同步访问事务锁列表期间出现。 除事务本身之外,在页拆分过程中死锁检测和锁迁移等操作也可访问锁列表。
XACTWORKSPACE_MUTEX在同步事务中的脱离以及事务登记成员之间的数据库锁数时出现。
XDB_CONN_DUP_HASH仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XDES_HISTORY仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XDES_OUT_OF_ORDER_LIST仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XDES_SNAPSHOT仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XDESTSVERMGR仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XE_BUFFERMGR_ALLPROCESSED_EVENT在扩展事件会话缓冲区刷新到目标时发生。 此等待在后台线程上发生。
XE_BUFFERMGR_FREEBUF_EVENT当下列任一条件成立时发生:
XE_CALLBACK_LIST仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XE_CX_FILE_READ仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
XE_DISPATCHER_CONFIG_SESSION_LIST在使用异步目标的扩展事件会话启动或停止时发生。 此等待表明发生了以下某一情况: - 扩展事件会话正在向后台线程池注册。 - 后台线程池正在根据当前负载计算所需的线程数。
XE_DISPATCHER_JOIN在用于扩展事件会话的后台线程终止时发生。
XE_DISPATCHER_WAIT在用于扩展事件会话的后台线程等待事件缓冲区进行处理时发生。
XE_FILE_TARGET_TVF仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XE_LIVE_TARGET_TVF仅限内部使用。
适用于:SQL Server 2012 (11.x) 及更高版本。
XE_MODULEMGR_SYNC标识为仅供参考。 不支持。 不能保证将来的兼容性。
XE_OLS_LOCK标识为仅供参考。 不支持。 不能保证将来的兼容性。
XE_PACKAGE_LOCK_BACKOFF标识为仅供参考。 不支持。
适用于:SQL Server 2008 R2 (10.50.x) 。
XE_SERVICES_EVENTMANUAL仅限内部使用。
XE_SERVICES_MUTEX仅限内部使用。
XE_SERVICES_RWLOCK仅限内部使用。
XE_SESSION_CREATE_SYNC仅限内部使用。
XE_SESSION_FLUSH仅限内部使用。
XE_SESSION_SYNC仅限内部使用。
XE_STM_CREATE仅限内部使用。
XE_TIMER_EVENT仅限内部使用。
XE_TIMER_MUTEX仅限内部使用。
XE_TIMER_TASK_DONE仅限内部使用。
XIO_CREDENTIAL_MGR_RWLOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XIO_CREDENTIAL_RWLOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XIO_EDS_MGR_RWLOCK仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
XIO_EDS_RWLOCK仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
XIO_IOSTATS_BLOBLIST_RWLOCK仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
XIO_IOSTATS_FCBLIST_RWLOCK仅限内部使用。
适用于:SQL Server 2017 (14.x) 及更高版本。
XIO_LEASE_RENEW_MGR_RWLOCK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XTP_HOST_DB_COLLECTION仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
XTP_HOST_LOG_ACTIVITY仅限内部使用。
适用于:SQL Server 2014 (12.x) 及更高版本。
XTP_HOST_PARALLEL_RECOVERY仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XTP_PREEMPTIVE_TASK仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XTP_TRUNCATION_LSN仅限内部使用。
适用于:SQL Server 2016 (13.x) 及更高版本。
XTPPROC_CACHE_ACCESS当访问所有本机编译的存储过程缓存对象时发生。
适用于:SQL Server 2014 (12.x) 及更高版本。
XTPPROC_PARTITIONED_STACK_CREATE当为给定的过程按 NUMA 节点分配本机编译的存储过程缓存结构(必须为单线程)时发生。
适用于:SQL Server 2012 (11.x) 及更高版本。

以下 XEvents 与分区 SWITCH 和联机索引重新生成相关。 有关语法的信息,请参阅 ALTER TABLE (Transact-SQL) ALTER INDEX (Transact-SQL)

  • lock_request_priority_state
  • process_killed_by_abort_blockers
  • ddl_with_wait_at_low_priority

有关锁兼容性矩阵,请参阅 sys.dm_tran_locks (Transact-SQL)

等待事件SOS_SCHEDULER_YIELD

和CPU有关,参考:https://www.dbaup.com/sql-serverzhongdedengdaishijiansos_scheduler_yieldshuoming.html

等待事件MISCELLANEOUS

在 SQL Server 中,等待事件“MISCELLANEOUS”表示当前连接正在等待某个未知的或未被识别的事件。这通常是一种不常见的等待事件,通常出现在以下情况下:

  • 空闲等待:在等待需要输入命令,例如事务未提交
  • 系统资源不足:如果系统资源(如CPU、内存、磁盘IO等)不足,可能会导致连接出现MISCELLANEOUS等待事件,因为连接需要等待更多资源才能继续执行。
  • 等待操作系统资源:如果连接需要等待操作系统资源(如文件系统、网络等)时,可能会导致出现MISCELLANEOUS等待事件。
  • 第三方组件问题:某些第三方组件或扩展可能会导致MISCELLANEOUS等待事件的出现,因为它们可能会引入未知或未被识别的等待事件。

如果在SQL Server中发现了MISCELLANEOUS等待事件,建议先检查系统资源是否足够,并尝试识别是否有其他等待事件或性能瓶颈问题。如果问题持续存在,可能需要考虑使用SQL Server Profiler或Extended Events等工具进行详细的诊断和调试。

"MISCELLANEOUS" 是 SQL Server 中的一种等待事件,通常表示未分类的等待事件。这个等待事件通常是一个泛指,用于捕获不属于其他明确等待事件类型的等待情况。在性能监视或诊断中,"MISCELLANEOUS" 等待事件可能会出现,但它并不提供有关性能问题的具体信息。

要更详细地了解 "MISCELLANEOUS" 等待事件的性质以及可能的解决方法,您需要进一步分析等待事件的上下文和其他相关性能计数器。以下是一些可能的步骤:

  1. 查看等待事件的上下文:可以通过查询 sys.dm_os_waiting_tasks 等系统动态管理视图来查看正在等待 "MISCELLANEOUS" 事件的会话和任务的详细信息。这可能会提供更多关于等待事件的上下文信息。

  2. 查看其他性能计数器:查看其他性能计数器,例如 CPU 使用率、内存使用率、磁盘 I/O 等,以查看是否存在其他性能问题或瓶颈。"MISCELLANEOUS" 事件可能是其他问题的副产品。

  3. 审查最近的操作:检查会话的最近操作,以确定是否有长时间运行的查询或操作,可能会导致等待事件。使用 SQL Server 的查询执行计划来分析查询性能。

  4. 检查活动进程:查看当前正在运行的会话和查询,以确定是否有会话占用了太多资源或执行时间过长。

  5. 审查错误日志:检查 SQL Server 错误日志,以查看是否有与 "MISCELLANEOUS" 事件相关的错误消息或异常。

  6. 考虑升级或修补程序:有时,"MISCELLANEOUS" 事件可能会由 SQL Server 版本或修补程序的问题引起。确保您的 SQL Server 实例是最新的,并应用了相关的修补程序。

  7. 使用性能监视工具:使用性能监视工具如 SQL Server Profiler 或 Extended Events 来跟踪和分析系统活动,以识别问题的根本原因。

最终,要解决 "MISCELLANEOUS" 等待事件,您需要深入分析具体的等待情况和性能指标,以确定导致等待的根本原因,并采取适当的措施来解决性能问题。

等待事件CXPACKET

CXPACKET 这个等待可以简单理解成CPU相关的等待,主要发生在并行计划中。由于并行计划需要协同多个task同时工作,那么“协同”分配等等操作的时候出现的就是这个等待。如果 CXPACKET 在你系统中是最为严重的等待,这时候一般的表现是你的CPU很高。

在 SQL Server 中,CXPACKET 表示并行查询的一种类型,它是一种等待状态,表示某个查询的线程正在等待其他并行线程完成工作。通常,CXPACKET 等待的时间很短,但是如果等待时间过长,则可能会导致性能问题。

在一个并行查询中,SQL Server 会将查询分成多个任务,并将这些任务分配给不同的处理器或核心执行。每个任务将在一个独立的线程中执行,并在完成后将结果合并。CXPACKET 等待状态表示某个线程已经完成了其任务,并正在等待其他线程完成其任务以进行结果合并。

如果出现 CXPACKET 等待状态时间过长的情况,可能是由于以下原因导致的:

  1. 并行度设置不当:如果将并行度设置得太高或太低,都可能导致 CXPACKET 等待状态的出现。如果并行度设置得太高,可能会导致 CPU 过度使用,而如果并行度设置得太低,则可能会导致查询速度变慢。
  2. 不均衡的并行查询:如果某个并行任务的工作量过大,可能会导致其他任务无法及时完成其工作,从而导致 CXPACKET 等待状态的出现。
  3. 锁竞争:如果多个并行线程访问同一数据页或索引,可能会导致锁竞争,从而导致 CXPACKET 等待状态的出现。

为了解决 CXPACKET 等待状态问题,可以采取以下措施:

  1. 调整并行度设置:根据系统资源和查询性质,适当调整并行度设置,避免过度或不足的使用 CPU。
  2. 优化查询计划:通过优化查询计划,避免不均衡的并行查询或锁竞争问题。
  3. 加速 IO 操作:通过增加磁盘读取速度或使用更快的存储介质,减少 IO 操作等待时间,从而降低 CXPACKET 等待状态的出现。

总结
1、Server 在执行查询时如果使用并行(parallel),这通常会比在序列化进程(serialized process)中执行的查询要快。使用并行计划时,查询在多个线程中执行,只有在所有并行线程都完成后才能继续查询。这意味着整个查询的快慢取决于最慢的那个线程。并行时SQL Server将一个线程指定为调度线程,这个调度的线程会将并行工作负载的一部分分配给工作线程,并行性就像生产者(工作线程CXPACKET)将数据推送给消费者(调度线程CXCONSUMER),消费者可能不得不等待生产者的数据。因此,需要注意生产者等待,而消费者等待是不可避免的,因为生产者运行时间较长,则消费者等待是被动的结果。当出现CXPACKET等待,表示工作线程CXPACKET出现性能问题,调度线程CXCONSUMER等待工作线程CXPACKET提供数据;当经常出现CXCONSUMER等待时,就表示调度线程CXCONSUMER出现性能问题,调度线程CXCONSUMER无法及时把数据处理完成。

2、SQL Server为了加快执行速度,当语句消耗超过Cost Threshold for Parallelism设置时就会采用多线程并行的方式进行,每个线程处理一部分数据,最后再进行结果合并,在等待一个或多个线程返回结果时就会产生CXPACKET、CXCONSUMER等待。对于复杂的SQL语句,并行的方式可以大幅的降低执行时间。如果简单的的SQL语句也出现CXPACKET、CXCONSUMER等待。那么在高并发的情况下,这样的简单语句也会产生严重的性能问题。

3、Cost Threshold for Parallelism 值以秒为单位,这意味着对于 SQL Server 估计运行时间将超过 5 秒的每个查询,将创建一个并行计划。

4、通过查询sys.dm_exec_session_wait_stats可以看到某个会话中哪个等待消耗多少时间

5、如果select和DML语句使用了并行并导致严重等待,那么思路就是去检查执行计划,如果DDL语句使用了并行并导致了严重等待,那么可能要考虑增加内存和cpu资源。

另请参阅

WRITELOG(写事务日志到硬盘)

和Disk的写速度有关,说明任务当前正在等待将日志记录写入日志文件,出现这个等待状态,意味着Disk的写入速度是性能瓶颈。

若是2014版本,则可以考虑配置延迟事务持久性提交特性。

等待事件RESOURCE_SEMAPHORE和RESOURCE_SEMAHPORE_QUERY_COMPILE说明

参考:https://www.dbaup.com/mssqlzhongdedengdaishijianresource_semaphoreheresource_semahpore_query_compileshuoming.html

视图sys.dm_os_wait_stats

返回执行的线程所遇到的所有等待的相关信息。 可以使用此聚合视图来诊断SQL Server以及特定查询和批处理的性能问题。 sys.dm_exec_session_wait_stats (Transact-SQL) 按会话提供类似的信息。

备注

若要从 Azure Synapse Analytics 或 Analytics Platform System (PDW) 调用此功能,请使用名称 sys.dm_pdw_nodes_os_wait_stats。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

列名称数据类型说明
wait_typenvarchar(60)等待类型的名称。 有关详细信息,请参阅本文后面的 等待类型
waiting_tasks_countbigint该等待类型的等待数。 该计数器在每开始一个等待时便会增加。
wait_time_msbigint该等待类型的总等待时间(毫秒)。 该时间包括 signal_wait_time_ms。
max_wait_time_msbigint该等待类型的最长等待时间。
signal_wait_time_msbigint正在等待的线程从收到信号通知到其开始运行之间的时差。
pdw_node_idint此分发所在节点的标识符。 适用于:Azure Synapse Analytics、Analytics Platform System (PDW)

在SQL Server等待时间计数器是 bigint 值,因此不像早期版本的 SQL Server 中的等效计数器那样容易发生计数器滚动更新。

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

清空当前等待事件统计

可以重置此动态管理视图的内容。 此 T-SQL 命令将所有计数器重置为 0:

备注:

这些统计信息在数据库引擎重启后不会保留,并且自上次重置统计信息或数据库引擎启动以来,所有数据都是累积的。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time 列查找上次数据库引擎启动时间。

权限

对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE 权限。

在 SQL 数据库“基本”、“S0”和“S1”服务目标中,对于“弹性池”中的数据库,服务器管理员帐户、Azure Active Directory 管理员帐户或##MS_ServerStateReader##服务器角色中的成员身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。

IO相关的等待

IO相关的等待与IO资源有关,比如,备份和还原等待的等待类型是:BACKUPIO/BACKUPBUFFER,这类等待发生在备份任务正在等待所需的数据或者数据缓存时。

  IO_COMPLETIONPAGEIOLATCH_和 WRITELOG 这三个等待是最为常见的和磁盘相关的等待。

  他们的不同点是  

    IO_COMPLETION 主要针对非数据页 I/O ,如备份操作所需的磁盘交互。

    PAGEIOLATCH_XXX 是数据页相关的磁盘等待。

    WRITELOG 是日志相关。

  如果系统中这三个等待是主要等待,说明系统磁盘存在压力或已经成为瓶颈。

 

PAGEIOLATCH_XXX

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

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复