使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

假设你在 2016 年和 2017 SQL Server具有Always On可用性组 (AG) 。 在辅助副本 (replica) 上处理读取查询时,由于频繁DIRTY_PAGE_TABLE_LOCK等待,性能可能比主要副本 (replica) 慢得多。

原因

出现此问题的原因是读取查询与重做线程之间的争用,以及表已锁定。

解决方法

此修补程序包含在SQL Server的以下更新中:

2017 SQL Server累积更新 8 

SQL Server 2016 Service Pack 2 的累积更新 1

SQL Server 2016 Service Pack 1 的累积更新 9

关于SQL Server生成

SQL Server的每个新版本都包含上一版本中的所有修补程序和安全修补程序。 建议为 SQL Server 版本安装最新版本:

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新版本

解决方法

若要解决此问题,可以通过启用跟踪标志 3459,使用单个重做线程而不是并行重做线程。

更多信息

当只读查询在可读的辅助副本 (replica) 上运行时,查询线程会尝试应用挂起的日志重做操作,并且需要与具有DIRTY_PAGE_TABLE_LOCK等待的重做工作线程进行协作,如果存在并发重做工作负载,这些线程会频繁生成,并降低重做和查询性能。 本文提到的 SQL Server 2016 SP 和 SQL Server 2017 累积更新版本中解决了与DIRTY_PAGE_TABLE_LOCK等待相关的性能问题。

有关详细信息,请参阅以下有关可用性组辅助副本 (replica) 重做模型和性能的博客。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新 的术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×