CXPACKET 在 SQL Server 上等待
最近我在 SQL Server 數據庫上遇到性能問題,我有兩個查詢顯示等待,如下所示,此伺服器上的一個數據庫是 Always On 副本的成員,但負載在另一個數據庫上。
第一個查詢是我自己的查詢,它在 10 秒內收集等待統計數據併計算差異,如果來自 Pauls 的查詢,則計算第二個列表: https ://www.sqlskills.com/blogs/paul/wait-statistics-or-please-告訴我哪裡疼/
關於差異,我想知道我是否應該忽略 CXPACKET 和 Redo_Thred_Pending_Work 等待並解決 PageIOLatch_SH 等待的根本原因(可能是索引不佳)。MAXDOP 值為 0,伺服器有 36 個核心,有什麼想法嗎?
除非我們知道您遇到的性能問題的性質,否則很難發表評論,這可能是由於各種因素造成的。
您擷取的等待還有兩種不同的方式。為在您計算特定查詢執行期間見證的等待而收集的一個。而來自 Paul Randal 的其他人是自上次重新啟動以來指向 CXpackets 的匯總數據,這並不一定表明它存在問題。它收集了自上次重新啟動以來將執行的所有程序的等待統計資訊。因此,這取決於您是要對整體伺服器性能進行故障排除,還是僅對那些等待被擷取的查詢進行故障排除。
此外,根據您的 sql 伺服器的版本,還有更好的解釋 CXpackets 等待的方法。在 sql 2016 SP2 之後,您現在也有了 cxconsumer,因此可以區分好的和壞的 CXpacket 等待統計資訊。在這裡閱讀Aaron Bertrand 的更多資訊。
我還看到你有 MAXDOP 0 ,應該根據要調整的邏輯處理器使用最佳魔法數字進行測試。根據我的經驗和 MS 的支持,適用於我們大多數數字的最佳魔法數字介於 4 到 8 之間,其中邏輯處理器大於 8。您還可以查看 dbatools 以查找在您的環境中推薦的數字。
除了 MAXDOP,別忘了檢查伺服器的並行成本門檻值。5 預設不好用。
但是,您還應該查看其他因素,例如索引策略,尋找調整它們的機會,從而幫助獲得性能