2008-08-18 12 views
9

SQL Server 2005クラスタでは、散発的でランダムなクエリタイムアウトが発生しています。私はそれを使用するいくつかのアプリを所有しているので、私は調査中に手伝っています。通常のPerfmonでCPU時間の%を見ていると、確かにペグアウトしていることがわかります。ただし、SQLアクティビティモニタでは、プロセスで使用されている累積CPUおよびIO時間だけが使用されます。おそらく、私はプロファイラを使用してトレースを実行することができましたが、このクラスタは非常に頻繁に使用されています。私は乾草の針を探しているのでしょうか?私は間違った木を吠えますか?SQL Serverのパフォーマンスの問題の特定

誰もこの環境で高価なクエリ/プロセスを追跡する良い方法がありますか?

答えて

12

これ、平均CPU時間によって、あなたにトップ50のステートメントを与える他のスクリプトはこちらをチェックします:http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50 
     qs.total_worker_time/qs.execution_count as [Avg CPU Time], 
     SUBSTRING(qt.text,qs.statement_start_offset/2, 
      (case when qs.statement_end_offset = -1 
      then len(convert(nvarchar(max), qt.text)) * 2 
      else qs.statement_end_offset end -qs.statement_start_offset)/2) 
     as query_text, 
     qt.dbid, dbname=db_name(qt.dbid), 
     qt.objectid 
FROM sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt 
ORDER BY 
     [Avg CPU Time] DESC 
2

プロファイラーは、「針生植物の針」のように見えるかもしれませんが、何か役に立つものがあります。データベースが一般的な負荷をかけている間に数分間実行し、何らかの方法で時間がかかりすぎたり、リソースが不足しているように見えるクエリがあるかどうかを確認してください。このような状況は、一般的な問題を指摘することができますが、特定の状況では、全体的にパフォーマンスが非常に悪くなるほどのものが混乱する、1つまたは2つのサイトの特定の問題に関連する可能性があります。

4

QuestのSpotlight製品を使用します。明らかにそれは時間とお金の投資なので、短期的にはあなたを助けないかもしれませんが、もしあなたが大規模なSQL環境を持っていれば、かなり役に立ちます。

3

Yaakovのが言うように、典型的な負荷の下で数分間プロファイラを実行し、に結果を保存しますテーブルを使用すると、結果に対してクエリを実行して、リソースのホッギングクエリをより簡単に見つけることができます。

2

一定数以上の読み込みを行うクエリに対して、プロファイラとフィルタを実行します。私が取り組んでいたアプリケーションでは、5000件以上の読み込みを行ったレポート以外のクエリでは2番目の見方に値しました。あなたのアプリには異なる閾値があるかもしれませんが、アイデアは同じです。

2

This utility Erland Sommarskogは非常に便利です。

データベースに追加するストアドプロシージャです。どのクエリがアクティブで、ロック、ブロックなどの良い画像が得られているかを確認したいときはいつでも実行してください。

4

私はPerformance Dashboard Reportsを非常に参考にしています。これらはMicrosoftが提供する一連のカスタムRSレポートです。クライアントPCでインストーラを実行してから、SQL Serverインスタンスでsetup.sqlを実行するだけです。

その後、SSMSのデータベース(どちらのデータベースでも問題ありません)を右クリックし、[レポート - >カスタムレポート]を選択します。デフォルトで\ Program Files \ Microsoft SQL Server \ 90 \ Tools \ PerformanceDashboardフォルダにあるperformance_dashboard_main.rdlに移動して選択します。これは一度だけ行う必要があります。初めて初めてレポートリストに表示されます。

メインダッシュボードビューには、とりわけCPU使用率が表示されます。時々リフレッシュすることができます。スパイクが表示されたら、グラフのバーをクリックして、その背後にある詳細データを取得します。

関連する問題