2009-06-05 92 views
0

我面臨一個問題,即運行存儲過程需要佔用太多資源,有時會導致服務器超時(特別是當CPU使用率超過90%時)。發現SQL查詢的最慢塊的最佳方法是什麼?

任何人都可以提出什麼最好和最快的方法是發現需要很多資源的塊,並且還建議一個好方法來解決它嗎?

  • 我使用SQL Server 2005
+0

這不是一個「答案」,但您可能會喜歡Faroult&L'Hermite的「重構SQL應用程序」一書。它會給你一些其他的想法,除了閱讀神祕的查詢計劃。 – 2011-05-06 04:52:25

回答

5

您要使用的查詢分析器。 Explained here。這將向您顯示您的查詢執行路徑的圖形表示,以及它的哪些部分花費最多的時間。

0

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

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

使用此信息,您可以就如何調整數據庫做出明智的決定。 (如添加一個索引違規桌)

3

如果你想知道哪一個塊是最慢的,請使用以下

SET STATISTICS PROFILE ON

SET STATISTICS IO ON

SET STATISTICS TIME ON

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

0

你並不需要使用SQL Profiler來查看執行計劃 - 只是:

SET SHOWPLAN_XML ON 
0

如果在存儲過程的語句一堆可以一個有點令人費解打開設置statistics因爲你有很多輸出塊與輸入相關聯。

SSMS中查詢計劃的圖形表示非常有用,因爲它顯示了每個語句相對於整個批次/ sproc成本的%成本。但是這是一個單一的值,所以在運行Profiler和打開語句級輸出時,它可能會更有幫助。如果您添加事件SQL:StmtCompleted和列CPU和讀取,則Profiler會爲每條語句提供單獨的IO和CPU成本。

相關問題