Sql-Server

如何監控本地 SQL Server 數據庫的應用程序洞察力的性能?

  • January 26, 2021

Application Insights 有很好的方法來監視數據庫。經過一些線上調查,我看到瞭如何監控實際查詢的解釋。也可以監控 SQL 性能,但我發現是對 Azure SQL 數據庫的解釋。我在 prem SQL Server 上使用….

我想要的是對本地數據庫進行這種監控。但是,需要通過應用程序洞察來監控數據。

我通常感興趣的是:

  1. 每個選擇查詢返回的記錄數
  2. 每小時/每天執行的查詢數
  3. 單個查詢的性能。

我怎樣才能做到這一點?

我不了解 application Insight,但 SQL prem 伺服器中已經存在許多東西,可以讓您監控伺服器。我會把我用的東西放在這裡,以防它對你有幫助。

對於每小時/每天的查詢數,我監控 perfmon 計數器“每秒請求批處理”。https://www.brentozar.com/archive/2017/02/what-is-batch-requests-per-second/

您還可以打開查詢儲存,這將幫助您監控查詢和查詢計劃的性能。

但是要獲得每個選擇返回的記錄數和單個查詢的性能,您需要始終在您的伺服器上執行跟踪。在我看來,這有點太多了,而且似乎可能會影響伺服器的性能。

我所做的是,我監控 perfmon 計數器鎖存器,當它高於我的上述門檻值時,我會收到警報並檢查正在執行的查詢並對其進行性能檢查。它使我能夠在問題發生時抓住它們。https://www.mssqltips.com/sqlservertip/3088/explanation-of-sql-server-io-and-latches

為了監控 perfmon,我們使用監控工具 Zabbix。

您也可以使用 Brent Ozar 的 sp_blitz 來幫助您。https://www.brentozar.com/blitz/ 這是一個非常有用的工具,我也使用它並且它是免費的。

SQL Server 內置了三個工具,可以回答您提出的三個問題:

  1. 返回的行
  2. 執行次數
  3. 一般表現。

這些工具,沒有特別的順序是:

  • 動態管理視圖 (DMV)
  • 查詢儲存
  • 擴展活動

每個人都會回答所有三個問題,但是,他們的回答略有不同。

DMV 向您顯示目前記憶體中的查詢行為的聚合。從中您可以看到返回的行、查詢的執行次數以及執行時間和所用資源的聚合平均值。這裡的主要限制是這是一個聚合,它完全取決於目前記憶體中的內容。

查詢儲存向您顯示所有查詢行為的每小時聚合。在那裡,您可以再次看到返回的行數、執行次數以及平均時間和資源。因為平均值按小時細分(預設情況下),所以您可以進行前後比較。這裡的限制是你不能免費獲得這個。它必須通過數據庫方法在數據庫上啟用和管理。此外,它是一個聚合,但不是一個完整的聚合。如果您想計算 24 小時內的所有執行次數,則必須匯總聚合。

擴展事件根據您嘗試擷取的內容向您顯示每個單獨的批處理、儲存過程或查詢。這為您提供了返回的行以及時間和資源的精確度量。要獲得聚合,它在你身上。這裡的限制,嗯,真的沒有。擴展事件幾乎可以做任何事情。但是,您必須啟用、配置和維護它們。然後,如果您想要聚合,則必須執行提供聚合的工作(儘管 SSMS GUI 提供了一些工具來幫助實現這一點)。

這三個之一或組合將為您提供您想要回答這三個問題的所有數據。

引用自:https://dba.stackexchange.com/questions/283998