我们有两个同步提交的AlwaysOn节点。偶尔,SELECT查询正在等待HADR_SYNC_COMMIT。导致它的根本过程是什么?
Allow Snapshot Isolation和Is Read Committed Snapshot On设置为True。但是没有使用快照隔离,因为客户端正在强制读取提交。从主副本查询示例:select * from dbo.photoFileMetaData where FK_mediaId=@P0等待信息:(780ms)HADR_SYNC_COMMIT状态:suspended
既然SELECT不更新数据,为什么需要等待副本同步提交?
更新2018-08-30:当它发生时,我能够捕获阻塞。下面是阻塞资源的内容:metadatalock subresource=QDS_INTERVAL_STABILITY classid=qds_interval dbid=7 lockPartition=0 id=lock1e78c13d580 mode=X
发布于 2018-09-12 18:30:03
似乎查询商店是这里的问题。在禁用Query之后,我们还没有看到SELECT查询的任何阻塞。
更新问题的根本原因是在WMI子系统中每15分钟运行一次缓存刷新过程。此更改已在Windows更新中引入,并在Windows更新之后的大约6个月内得到了修复。
server正在使用特定的WMI查询(Win32_PerfFormattedData_PerfOS_Memory)来获取服务器上的内存使用量。你拥有的记忆越多,问题就越严重。
查询存储以某种方式涉及到了它。
我们没有从Windows团队收到任何确认这是一个错误,并已修复。但事实是,它随Windows更新而来并消失了。现在,我们再次运行Query。然而,Windows团队表示,这个特定的WMI功能已经很长时间没有改变了。
下面是WMI每15分钟一次的慢响应时间的例子,它把一切都搞砸了。

发布于 2018-08-14 03:18:28
由于HADR_同步_承诺等待指示主服务器正在等待在辅助服务器上强化日志块,所以普通的select查询导致等待累积是没有意义的,因为select查询不会生成要发送的任何事务日志。
你是怎么收集等待信息的?这种等待的最可能原因是执行了插入、更新或删除,然后select在同一事务中运行,但是正在考虑的等待包括先前积累的HADR_SYNC_COMMIT等待以及select语句。
如果select语句实际上是在事务外部运行的,并且它试图读取活动事务的一部分的数据(等待HADR_SYNC_COMMIT):
澄清要点:由于您已经启用并打开了提交快照,使用Read提交隔离级别的任何查询都是[自动使用RCSI ]。我是RCSI是如何工作的:
读提交的行为取决于READ_COMMITTED_SNAPSHOT数据库选项的设置: ... (如果READ_COMMITTED_SNAPSHOT设置为ON ),数据库引擎使用行版本控制向每个语句显示数据的事务一致性快照.
您已经提到,发送查询的客户端正在强制执行READ提交。它可能是通过READCOMMITTEDLOCK表提示强制使用共享锁和快照。但我还是觉得我应该澄清一下。
https://dba.stackexchange.com/questions/214818
复制相似问题