Sql Server 2005 Profilerを使用すると、最も遅いクエリとストアドプロシージャを見つけるためにどのようなイベント、列、およびフィルタをトレースしますか?最も遅いクエリの検索方法
Slow =引数のためにN秒を超えて10秒。
Sql Server 2005 Profilerを使用すると、最も遅いクエリとストアドプロシージャを見つけるためにどのようなイベント、列、およびフィルタをトレースしますか?最も遅いクエリの検索方法
Slow =引数のためにN秒を超えて10秒。
SQL 2005では、管理ビューを使用してslow running queriesを見つけることができます。私はしばらく前にSQL server performanceで見つけた良いスクリプトは、あなたが始めるのを助けるでしょう;最初に最もパフォーマンスの低いデータがリストされます。
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;
時間単位を知っていますか:total_worker_time、total_elapsed_time、およびavg_elapsed_time? –
時間はマイクロ秒単位です。 MSDNには、管理ビューの良い内訳があります。http://msdn.microsoft.com/en-us/library/ms189741.aspx – u07ch
はい、そのDMVは素晴らしいですが、ダイナミックでもあります。サーバーが起動するたびにフラッシュされます。サーバーが毎晩再起動される場合、これらのサーバーは特定の日に非常に信頼性の高いサンプルではない可能性があります。したがって、これらの測定値は注意深く扱います。動的であり、かなり小さいサンプルに基づいている可能性があります。 –
期間の列は私のためにありますが、時には読み込みと書き込みの列も見ています。
私は生のクエリを取得するためにTSQL:StmtCompletedフィルタを使用します。ストアドプロシージャのようなものを追加することもできますが、tsqlは表示する必要がある 'ベース'です。以降、 SP:MSDN articleは、「ストアドプロシージャ の実行がSPで監視することができ
を言うようStmtStartingイベント、SP:StmtCompletedの、そして SP:Completedイベントクラスと、すべての TSQLイベントクラス"
プロファイラを使用する前に、組み込みの使用状況レポートを確認します。データベース、レポート、標準レポート、オブジェクト実行統計を右クリックします。
現在キャッシュされている実行計画と、実行されたリソースの量と回数をリストします。これは、一般的に、サーバーをビジー状態に保っていることについての非常に良い考えを与えます。
@Andomar、プロダクションサーバーでそのレポートを実行するのはいいですか?私は、私のプロダクションサーバーの1台でそのレポートを実行しようとしましたが、1分後にはまだ "データを取得"していました。私はそれを安全に止めた。 –
@Bill Paetzke:非常に長い時間稼働しても、レポートは生産上安全です。あなたがそれを信用していない場合は、ブロックリストの問題をチェックすることができます! – Andomar
「ゆっくり」を定義します。クエリが遅い場合がありますが、これは実行されたコールの数とそれらがクリティカルであるかどうかにのみ関係します。 – Lucero