監控 SQL Server,有哪些關鍵 KPI?
我實際上建構了一些“自定義”監控工具來跟踪來自 DMV 表的資訊並將它們儲存在某種 DataWarehouse 中,我每 5 分鐘拍攝一次快照。
我正在檢索的數據是:
數據庫:
- 文件延遲(ldf 和 mdf)
- 文件大小和用途
- 交易
- 日誌增長和刷新
- 使用的數據庫 CPU
- 使用的數據庫緩衝區 MB
伺服器:
- SQL CPU/空閒程序/其他程序
- RAM(目標/已使用)
- 頁面預期壽命
- 記憶體命中率
- 使用者連接/數據庫連接
鎖具:
- 通用鎖/死鎖/等待資訊(網路… Io Latch…)
查詢:
在這一部分中,我有點迷失了……我希望能夠在我的伺服器上檢測到有問題的查詢,為此我需要儲存歷史資訊,因為某些 DMV 上的資訊是累積的,所以如果我想要對於某些平均值,例如 execution_count 我需要對它們進行快照。我不知道查詢應該達到什麼關鍵 KPIS 和門檻值才能被視為有問題的查詢…
另外,我不知道是否應該監控更多 KPI 以檢測 CPU 壓力/RAM 壓力/磁碟壓力。
任何改進它的幫助將不勝感激!
如果您不知道,那麼您還沒有準備好編寫這種性質的工具。為了回應其他人的評論,這就是為什麼人們購買工具來做得比我們更好的原因,而且對於只有幾台伺服器的小型商店來說,價格非常合理。
唯一為自己編寫體面工具的人是高技能的專業人員,有時他們在較大的商店工作,他們無法讓管理層承擔 6 位數的監控成本。
如果您想監控查詢性能,您需要閱讀查詢指紋,並通讀一些 Grant Fritchey 關於如何記憶體計劃的書籍。這很難,甚至他也會犯錯誤;這是MCM級別。
在那之後你會明白一點,但即使是付費工具也不會指出什麼時候出了問題。他們確實指出了最重要的查詢(在 CPU、磁碟、記憶體中),或者奇怪的記憶體授予,或者缺少索引。您可以從 Internet 輕鬆完成和儲存這些內容,但它們不是可提醒的門檻值。他們從來都不是。
您自己也可能能夠根據指紋和執行細節查明過度不同的計劃重新編譯 - 但這可能不值得,否則商業工具會這樣做。大概是太吵了。
還有另一本書叫Healthy SQL,它涵蓋了很多想法和門檻,但它變得模糊。
另一個好地方是下載日誌性能分析工具 (PAL),它有一個 SQL 計數器列表(以及磁碟 IO 計數器和類似的東西),並在 XML 中準確地定義了它如何計算門檻值以及為什麼。這些總體上很有用,但我不確定我是否會提醒他們,除非作為每日報告。
我認為有些公司還發布了一份半行銷白皮書,說明為什麼門檻值毫無意義以及您真正需要的是基線(並對標準偏差進行統計分析,但我很確定他們自己並沒有大量使用它)。但是恕我直言,沒有人分享易於理解的方法來分析和標記快照之間不同的原始基線數據。R 看起來是一個很有前途的地方,但沒有“如何”。