2008-09-30 37 views
4

我喜歡我可以剖析Java/.Net應用程序以查找性能瓶頸或內存問題的方式。例如,查看the call tree with execution times and invocation counts per method的性能瓶頸非常容易。在SQL Server中,我有存儲過程調用依賴於視圖的其他存儲過程,這類似於調用其他方法的Java/.Net方法。因此,似乎這種類型的分析器在這裏會非常有幫助。但是,我看起來很寬,找不到一個。任何人都知道這些工具,無論是對於SQL Server還是任何其他DBMS?是否有類似於Java/.Net分析器的SQL Server分析器?

更新:感謝您對SQL Server Profiler的回覆,但此工具非常有限。看看the screenshot

回答

6

結賬SQL Nexus Tool。這在識別瓶頸方面有一些很好的報告。 SQL Nexus是一款可幫助您確定SQL Server性能問題根源的工具。它加載並分析由SQLDiag和PSSDiag收集的性能數據。它可以顯着減少手動分析數據的時間。

在Inside 2005 SQL書籍(可能是T-SQL查詢)中的一本書中,有一種很酷的技術,作者將SQL分析器輸出轉儲到表或Excel文件中,並應用一個數據透視表來獲取輸出與截圖類似的格式。

我還沒有看到任何內置的SQL工具,它給你這種分析。 另一個有用的post

0

您可以使用S ql Profiler - 它涵蓋了剖析方面,但我傾向於將其更多地視爲一種記錄工具。 對於診斷性能,您應該只是看query plan

2

有關SQL Server探查另一個整個主題:

Identifying SQL Server Performance Problems

我明白你在說什麼,但通常,數據庫優化發生在更細粒度水平。如果數據庫活動是從客戶端驅動的,那麼您應該可以使用現有的客戶端分析器獲取每個步驟的總時間,然後解決低端的問題(無論是否在數據庫中)。

當您需要詳細分析特定數據庫步驟時,可以使用分析器和跟蹤。

通常情況下,數據庫訪問具有一定的粒度,可以單獨解決,數據庫活動與所有類型的用戶訪問不是線性的,而程序分析器通常會描述線性代碼路徑。

0

還有sql server profiler,但儘管它是名字,但它不會按照您的問題發出您想要的結果。它會向您顯示數據庫中正在進行的所有呼叫的詳細視圖。它是在一個時間

聽起來應用程序故障排除作爲一個整體,不只是一個存儲過程更好像你需要查看您的查詢的執行計劃/spocs在查詢分析器,並且會給你一個類似於您正在查找的數據。

1

如前所述,SQL Server Profiler非常適用於檢查程序中的參數是否傳遞給SQL等,但如果這是您需要的,它將不會向您顯示執行樹。爲此,我所能想到的就是使用Show Plan來查看在運行時究竟執行了什麼。例如。如果您調用調用視圖的sp,Profiler將僅向您顯示sp已執行並傳遞了哪些參數。 此外,Windows性能監視器還具有SQL Server特有的大量運行時性能指標。您可以在服務器上運行它,或者遠程連接。

1

要查找性能瓶頸,可以使用數據庫引擎優化顧問(可在SQL Server Management Studio的工具菜單中找到)。它提供了優化查詢和優化的建議,可以自動優化它們(例如,創建適當的索引等)。

0

正如幾個回覆所述,SQL事件探查器將顯示您要求的內容。您必須確保要打開存儲過程組中的事件SP:StmtCompleted,並且如果您想要查詢計劃以及打開Performance組中的Showplan XML Statistics Profile 。上一個XML計劃爲您提供了一個圖形化描述,並顯示了計劃中每個步驟處理的實際行。

如果探查器放慢應用程序速度,請儘可能多地過濾它,並考慮轉到服務​​器端跟蹤。

HTH 安迪