簡體   English   中英

發現SQL查詢最慢的塊的最佳方法是什么?

[英]What is the best way to spot the slowest block of a SQL query?

我遇到一個問題,運行存儲過程占用太多資源,這有時會導致服務器超時(尤其是當CPU使用率超過90%時)。

有人可以建議最好和最快的方法是發現占用大量資源的區塊,同時也提出解決它的好方法嗎?

  • 我正在使用SQL Server 2005

您要使用查詢分析器。 在這里解釋 這將向您顯示查詢執行路徑的圖形表示,以及其中花費最多時間的部分。

如果您想知道哪個塊最慢,請使用以下命令

開啟統計資料

將統計信息設置為“開”

開啟統計時間

運行SP時,這將顯示每個查詢的統計信息。

如果使用的是SQl Server Management Studio,則可以打開執行計划以顯示有關sql server將如何執行查詢的信息,包括每個子進程將占用整個進程的百分比。

通常,這樣做時,查詢的一部分顯然會使用大多數資源。

使用此信息,您可以就如何調整數據庫做出明智的決定。 (例如向有問題的表添加索引)

您不需要使用SQL Profiler來查看執行計划-只需:

SET SHOWPLAN_XML ON

如果存儲過程中有一堆語句,那么打開SET STATISTICS選項可能會有些麻煩,因為您有很多輸出要與輸入關聯。

SSMS中查詢計划的圖形表示非常有用,因為它可以顯示每個語句相對於整個批處理/處理程序的成本所占的百分比。 但這是一個值,因此有時僅運行Profiler並打開語句級輸出可能會更有幫助。 如果添加事件SQL:StmtCompleted並列CPU和讀取,則Profiler將為每個語句分別分配IO和CPU成本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM