web-dev-qa-db-ja.com

最も遅いクエリを見つける方法

Sql Server 2005 Profilerを使用して、最も遅いクエリとストアドプロシージャを見つけるためにトレースするイベント、列、フィルターは何ですか?

遅い= N秒より大きい、引数のために10。

52
KM.

SQL 2005では、管理ビューを使用して、実行速度の遅いクエリを見つけることができます。 SQLサーバーのパフォーマンス で少し前に見つけた良いスクリプトは、あなたが始めるのに役立ちます。最もパフォーマンスの低いデータが最初にリストされます。

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;
94
u07ch

プロファイラーを使用する前に、組み込みの使用状況レポートを確認します。データベース、レポート、標準レポート、オブジェクト実行統計の順に右クリックします。

現在キャッシュされている実行計画を、リソースの量とそれらが実行された回数とともにリストします。これは一般に、サーバーがビジー状態になっている原因について非常に良いアイデアを提供します。

12
Andomar

期間列は私のためにそれを行いますが、時々私は読み取りと書き込みの列も調べます。

TSQL:StmtCompletedフィルターを使用して、未処理のクエリを取得します。ストアドプロシージャなどを追加することもできますが、tsqlは表示する必要のある「ベース」です。 MSDN記事 のように

「ストアドプロシージャの実行は、SP:Starting、SP:StmtStarting、SP:StmtCompleted、およびSP:Completedイベントクラス、およびすべてのTSQLイベントクラスによって監視できます。」

4
gbjbaanb