徵兆
假設您在 SQL Server 2016 和 2017 中有Always On可用性群組 (AG) 。 當您處理次要複本上的讀取查詢時,效能可能會比主要複本慢很多,因為經常DIRTY_PAGE_TABLE_LOCK等待。
原因
此問題發生的原因在於讀取查詢和重做對話之間有爭議,以及資料表已鎖定。
解決方案
此修正套裝程式含在下列SQL Server更新中:
SQL Server 2016 Service Pack 2 的累積更新 1
SQL Server 2016 Service Pack 1 的累積更新 9
關於SQL Server組建
SQL Server的每個新組建都包含上一個組建中的所有 Hotfix 與安全性修正。 建議您安裝適用于SQL Server版本的最新組建:
因應措施
若要解決此問題,您可以啟用追蹤標幟 3459 來使用單一重做執行緒,而非平行的重做執行緒。
其他相關資訊
當唯讀查詢在可讀的次要複本上執行時,查詢執行緒會嘗試套用擱置中的記錄取消復原作業,並且需要使用 DIRTY_PAGE_TABLE_LOCK等待的 重做工作者執行緒共同作業,如果同時有重做工作負載,可能會經常產生並降低重做和查詢效能。 與DIRTY_PAGE_TABLE_LOCK等待相關的效能問題已在本文提及的 SQL Server 2016 SP 和 SQL Server 2017 累積更新版本中解決。
如需詳細資訊,您可以在 [可用性] 群組次要複本重做模型和效能上看到下列部落格。
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
參考資料
瞭解 Microsoft 用來描述軟體更新的 術語 。