どのようなテクニックを使用しますか? 実行に最も時間がかかるジョブをどのように見つけますか? 問題のあるアプリケーションを見つける方法はありますか?
5 に答える
ステップ 1: SQL Server パフォーマンス ダッシュボードをインストールします。
Step2: 利益。
真剣に、そのダッシュボードを見ることから始めたいと思うでしょう。インストールと使用の詳細については、ここおよび/またはここを参照してください。
問題のあるクエリを特定するには、プロファイラーを開始し、次のイベントを選択します。
- TSQL:バッチ完了
- TSQL:StmtCompleted
- SP:完成
- SP:StmtCompleted
たとえば、出力をフィルタリングします
- 持続時間 > x ミリ秒 (たとえば、100 ミリ秒、主にニーズとシステムの種類によって異なります)
- CPU > y ミリ秒
- 読み取り > r
- 書き込み > w
何を最適化するかによって異なります。サーバーのパフォーマンスに影響を与えるため、ウィンドウを何千ものデータ行がスクロールしないように、出力を十分にフィルタリングしてください。
後で分析するために、出力をデータベース テーブルに記録すると便利です。また、Windows システム モニターを並行して実行して、CPU 負荷、ディスク io、および一部の SQL サーバー パフォーマンス カウンターを表示することも役立ちます。データをファイルに保存するように sysmon を構成します。
プロファイラーで意味のある値を確認するには、データベースで本番環境の一般的なクエリ負荷とデータ量を取得する必要があります。
プロファイラーから出力を取得したら、プロファイリングを停止できます。
次に、保存されたデータをプロファイリング テーブルからプロファイラーに再度読み込み、importmenu を使用して systemmonitor からの出力をインポートすると、プロファイラーは sysmon 出力を SQL プロファイラー データに関連付けます。それは非常に素晴らしい機能です。
そのビューでは、メモリ、ディスク、または CPU システムに関するブートルネックをすぐに特定できます。
最適化したいクエリを特定したら、クエリ アナライザーに移動して実行計画を監視し、インデックスの使用とクエリの設計を最適化してみてください。
SQL Server 2000 で作業しているときに、SSMS または SQL プロファイラー内で提供されるデータベース チューニング ツールでうまくいきました。
重要なのは、優れたサンプル セットを使用して、真の本番ワークロードの一部を分析用に追跡することです。
SQL Server に付属している SQL プロファイラーを使用しています。私が見つけたパフォーマンスの悪いクエリのほとんどは、多くの CPU を使用していませんが、大量のディスク IO を生成しています。
私は、ディスク読み取りにフィルターを設定し、20,000 回以上の読み取りを行うクエリを探す傾向があります。次に、これらのクエリの実行計画を調べます。通常、クエリまたは関連するテーブルのインデックスを最適化するために必要な情報が得られます。
いくつかの異なるテクニックを使用します。
特定のクエリを最適化しようとしている場合は、クエリ アナライザーを使用します。実行計画の表示など、そこにあるツールを使用します。
どのクエリの実行速度が遅いかわからない状況で使用できる最も強力なツールの 1 つは、SQL プロファイラーです。
プロファイリングするデータベースを選択するだけで、そのまま実行できます。
適切な時間実行する必要があります (これはアプリケーションへのトラフィックによって異なります)。その後、結果をテーブルにダンプして分析を開始できます。
読み取りが多いクエリや、多くの CPU 時間を消費するクエリなどを見たいと思うでしょう。
最適化は面倒ですが、継続して取り組み、最も重要なことは、ボトルネックがどこにあるかを知っていると思い込まず、どこにあるかの証拠を見つけて修正することです。