Applies ToSQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows (all editions)

徵兆

假設您在 SQL Server 2016 和 2017 中有Always On可用性群組 (AG) 。 當您處理次要複本上的讀取查詢時,效能可能會比主要複本慢很多,因為經常DIRTY_PAGE_TABLE_LOCK等待。

原因

此問題發生的原因在於讀取查詢和重做對話之間有爭議,以及資料表已鎖定。

解決方案

此修正套裝程式含在下列SQL Server更新中:

SQL Server 2017 的累積更新 8 

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

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

關於SQL Server組建

SQL Server的每個新組建都包含上一個組建中的所有 Hotfix 與安全性修正。 建議您安裝適用于SQL Server版本的最新組建:

SQL Server 2017 的最新累積更新

SQL Server 2016 的最新組建

因應措施 

若要解決此問題,您可以啟用追蹤標幟 3459 來使用單一重做執行緒,而非平行的重做執行緒。

其他相關資訊

當唯讀查詢在可讀的次要複本上執行時,查詢執行緒會嘗試套用擱置中的記錄取消復原作業,並且需要使用 DIRTY_PAGE_TABLE_LOCK等待的 重做工作者執行緒共同作業,如果同時有重做工作負載,可能會經常產生並降低重做和查詢效能。 與DIRTY_PAGE_TABLE_LOCK等待相關的效能問題已在本文提及的 SQL Server 2016 SP 和 SQL Server 2017 累積更新版本中解決。

如需詳細資訊,您可以在 [可用性] 群組次要複本重做模型和效能上看到下列部落格。

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

參考資料

瞭解 Microsoft 用來描述軟體更新的 術語

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。