天天看點

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

1.使用SQL DMV查找慢速查詢

SQL Server的一個重要功能是内置于其中的所有動态管理視圖(DMV)。它們有數十種,可以提供有關各種主題的豐富資訊。

有幾個DMV提供有關查詢統計資訊,執行計劃,最近查詢等的資料。這些可以一起使用,以提供一些驚人的見解。

例如,下面的查詢可用于查找使用最多讀取,寫入,工作時間(CPU)等的查詢。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

查詢結果如下所示。下面的圖檔來自我制作的營銷應用程式。您可以看到一個特定查詢(前一個)占用了所有資源。

通過檢視此内容,我可以複制該SQL查詢,看看是否有某種方法可以改進它,添加索引等。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

優點:始終可用的基本彙總統計資訊。

缺點:不告訴你調用查詢的是什麼。無法在檢視随時間調用查詢時進行可視化。

2.通過APM解決方案查詢報告

許多應用程式性能管理 (APM)工具的一個重要特性是它們能夠跟蹤SQL查詢。例如, Retrace跟蹤多個資料庫提供程式(包括SQL Server)的SQL查詢。

Retrace可以告訴您查詢執行了多少次,平均需要多長時間以及調用它的事務。這對于SQL性能調優來說是非常有價值的資訊。

APM解決方案通過在運作時針對應用程式代碼執行輕量級性能分析來收集此資料。

以下是Retrace應用程式儀表闆的螢幕截圖,其中顯示了特定應用程式,哪些SQL查詢占用時間最長。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

回歸熱門SQL查詢

Retrace收集有關正在執行的每個SQL查詢的性能統計資訊。您可以搜尋特定查詢以尋找潛在問題。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

RETRACE檢視所有SQL查詢

通過選擇單個查詢,您可以檢視該查詢随時間調用的頻率以及所需的時間。您還可以檢視哪些網頁使用SQL查詢以及它們的性能如何受其影響。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

随着時間的推移回溯SQL性能

由于Retrace是一個輕量級代碼分析器并捕獲ASP.NET請求跟蹤,是以它甚至可以向您顯示代碼正在執行的操作的完整上下文。

下面是一個捕獲的跟蹤,它顯示了所有SQL查詢以及有關代碼執行操作的其他詳細資訊。Retrace甚至可以在同一視圖中顯示日志消息。另請注意,它顯示了正在執行查詢的伺服器位址和資料庫名稱。您還可以檢視傳回的記錄數。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

回溯WEB事務跟蹤

如您所見,Retrace提供全面的SQL報告功能,作為其APM功能的一部分。它還提供圍繞SQL查詢的多個監視和警報功能。

優點:跨應用程式,每個應用程式和每個查詢的詳細報告。可以顯示詳細說明查詢使用方式的事務跟蹤。每月隻需10$。一旦安裝就一直運作。

缺點:不提供每個查詢的讀取或寫入次數。

3. SQL Server Profiler(已棄用!)

在SQL Server Profiler中已經存在了很長一段時間。如果您試圖實時檢視針對您的資料庫執行的SQL查詢,那麼它非常有用。

注意:Microsoft已宣布SQL Server Profiler已被棄用!

SQL事件探查器捕獲有關您與SQL Server互動的非常詳細的事件。

  • 登入連接配接,斷開連接配接和失敗
  • SELECT,INSERT,UPDATE和DELETE語句
  • RPC批處理狀态調用
  • 存儲過程的開始和結束
  • 存儲過程中語句的開始和結束
  • SQL批處理的開始和結束
  • 寫入SQL Server錯誤日志的錯誤
  • 在資料庫對象上擷取或釋放的鎖
  • 一個打開的光标
  • 安全權限檢查
sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

SQL SERVER PROFILER

優點:非常詳細的資料。

缺點:你必須手動打開它。這會強制您重新建立要捕獲的場景。它最終會轉向支援擴充事件。

4. SQL Server擴充事件

SQL事件探查器已被SQL Server擴充事件替換。這肯定會激怒很多人,但我可以了解為什麼微軟會這樣做。

擴充事件通過事件跟蹤(ETW)工作。這是所有Microsoft相關技術公開診斷資料的常用方法。

ETW提供了更大的靈活性。作為開發人員,我可以輕松地從SQL Server中擷取ETW事件以收集用于自定義用途的資料。這真的很酷,非常強大。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

優點:更容易啟用和運作。更容易開發定制解決方案。

缺點:因為它是相當新的,大多數人可能沒有意識到它。

5. SQL Azure查詢性能洞察

我将假設SQL Azure的性能報告是建立在擴充事件之上的。在Azure門戶中,您可以通路各種非常有用的性能報告和優化提示。

注意:這些報告功能僅适用于SQL Azure上托管的資料庫。

在下面的螢幕截圖中,您可以看到SQL Azure如何輕松使用使用最多CPU,Data IO和Log IO的查詢。它内置了一些很棒的基本報告。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

SQL AZURE熱門查詢

您還可以選擇單個查詢并擷取更多詳細資訊以幫助進行SQL性能調整。

sqlserver對外提供連接配接_SQL Server的性能調優:解決查詢速度慢的五種方法

SQL AZURE查詢詳細資訊

優點:很棒的基本報告。

缺點:僅适用于Azure。沒有跨多個資料庫的報告。

摘要

下次需要使用SQL Server進行一些性能調整時,您可以考慮使用一些選項。可能的情況是,您将使用多個這些工具,具體取決于您要完成的任務。

如果您使用的是像Retrace這樣的APM解決方案,請務必檢查它内置的SQL性能功能