Sql-Server
確定大量 SP 的表格和影響
當系統不受 CPU 限制並且 95% 的響應看到響應時間減少時,我試圖找出導致某些響應時間增加的原因。
所以我所做的就是將其追踪到系統中發生的單個程序,並分析該程序以確定在該過程中觸發了哪些 SP 和 UFN。我最初的想法是,我可以單獨執行每個 SP 和 UFN,並查看查詢計劃以查看發生全面掃描的位置,這可能需要從壓縮中解壓縮數據並可能導致等待觸發。
所以我現在擁有的是:
- 使用參數的 SP 列表
- 執行 SP 的數據庫
- 不受限制的管理員訪問系統以重現問題
- 相關過程的配置文件跟踪
由於我必須整理諸如 35 個 SP/UFN 之類的東西,我想知道最有效的方法是縮小原因範圍。根據我對系統的經驗,我可以推斷出一些 SP 比其他人更有可能是罪魁禍首,但我想嘗試以更科學的方式縮小範圍。是否有任何工具或方法可以幫助我找出最有可能的罪犯?
如果我可以確定壓縮時比未壓縮時更慢的對象,這將有助於為我們的頁面壓縮策略提供資訊。
如果您確定這 35 個可程式程序是經過時間的配置文件/事件和記憶體計劃的組合的罪魁禍首,再加上sys.dm_exec_query_stats應該讓您了解痛苦所在的位置。
不過,@Paul 關於記錄基線的評論很重要。
科學方法基於定期收集過程和程序性能資訊,使用商業包或更本土的解決方案。您也可以完全從頭開始從 Profiler 或擴展事件中收集資訊。重要的是定期擷取數據,並使其易於使用(例如使用
SSRS
)。可用的歷史資訊使跟踪隨時間推移的漸進性能變化、在資源需求發生之前預測增加的資源需求、診斷突然變化以及辨識和測試需要改進的領域變得容易。
關於後一點,我相信您的方法應該是這樣的:
- 在合理的時間段內建立良好的基線資訊
- 確定可能從壓縮中受益的區域
- 在改進目標區域測試
ROW
和PAGE
壓縮- 測試代表性工作負載的聚合變化
- 改進或回歸無益的更改
- 實施變更並監控生產中的影響
這比事後試圖在復雜程式碼中追踪性能回歸要容易得多,沒有基線可比較。