創建 SQL Server 性能基線監控
為了獲得概覽和可比較的數據,我目前的任務是創建性能基線,以獲取有關不同生產 SQL Server 實例的一些數據。
我的想法是:
- 我想使用幾個 DMV
- 我想包括一個探查器跟踪(包括執行計劃)
- 我想包含性能數據
所以我試圖實現的是一個可啟動和可停止(也可調度)的通用性能監控,它返回:
- 確定正在進行的性能優化任務是否成功所需的所有資訊
- 幾個匯總的簡單數字有助於視覺化長期進展.. esp。用於管理;-)
- 探查器跟踪中的可重新執行的執行計劃,以比較各個隊列的更改和索引優化任務的改進
我發現了一些描述創建性能基線的資訊。它們中的大多數要麼非常複雜,要麼只關注所需的性能指標之一(主要是性能數據)。
最匹配的範例/描述如下:為 SQL Server 創建性能基準
問題是:
有沒有人有以快速可行的方式創建這種性能監視器的經驗?
一年多後,我想讓大家知道我的經歷以及這個問題/話題的最終結果。
我開始自己創造東西。最初,我按照 Tim Ford 的文章使用 CMV 收集和儲存 SQL Server 性能計數器歷史數據來獲取一些東西,並使用我想要收集的任何數據擴展它。因此,我每天一次在每個 Sql Server 上執行幾個儲存過程,這些過程從 DMV 收集一些特定資訊,並將結果儲存在數據庫內的本地伺服器上。這包括索引使用、缺失索引、特定日誌條目(如自動增長)、伺服器設置、應用程序數據庫設置、碎片、作業執行、事務日誌資訊、文件資訊、等待統計資訊等。
此外,我將 Brent Ozar 的 sp_blitz 定期執行結果添加到此儲存庫中,以收集其他有價值的指示來工作、改進和報告。
所有數據稍後都會從那裡收集到一個專用的監控 Sql Server 中,這樣我就創建了一個捆綁儲存,用於儲存有關我所有伺服器的性能相關資訊,並將其用作調查和報告的基礎。
然後,我創建了 excel 表和報告,並使用報告服務進行分析和解釋。一些樣本:
此外,我使用 TYPEPERF 配置了一些性能計數器監控,靈感來自Fedor Georgiev的文章“將性能數據收集到 SQL Server 表中”。
從我的 SQL 監控實例中,我觸發 typeperf 執行並使用可配置的 sampleinterval 收集可配置數量的樣本,並將結果儲存在我的中央監控數據庫中。
這使我能夠觀察長期性能值,範例:
在使用它收集基線資訊一段時間後,發現必須花費大量維護工作來查看失敗的作業、調試程序(例如,如果數據庫離線,一些腳本失敗),在更換伺服器後維護設置…
此外,收集所有記錄的數據庫本身也需要維護和性能調整,因此需要進行額外的工作以保持數據有用……
最終完全缺少的是觀察現場發生的事情的能力。在最佳情況下,我將能夠判斷數據收集器執行後第二天可能發生的情況。也缺少所有細節。我無權訪問死鎖圖,我無法查看在可疑時間範圍內執行的查詢的查詢計劃……
所有這一切都讓我要向管理部門收費,花錢購買我自己無法創建的專業解決方案。
最後的選擇是購買 SentryOne,因為與其他人相比,它具有說服力,並提供了辨識我們的痛點所需的大量資訊。
作為最後的結論,我建議任何尋找類似問題答案的人不要嘗試自己創造東西,只要你沒有一個小而基本健康的環境。如果您有幾個系統和很多問題,最好立即尋求專業的解決方案並使用供應商的幫助來解決您的問題,而不是花費大量時間和金錢來創建一些不太有用的東西。然而,這條路線仍然很有趣,讓我學到了很多我不想錯過的東西。
我希望您在遇到此問題後發現這很有用。
編輯 2017 年 4 月 20 日: Brent Ozar 最近在 facebook 上發布了以下文章,這是 SQL Tiger 團隊採用的類似方法:https ://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -reports-unleashed-for-enterprise-monitoring/