適用対象:SQL Server
SQL Server の SQLServer:SQL Statistics オブジェクトには、コンパイルの動作や、SQL Server のインスタンスに送信された要求の種類を監視するためのカウンターが用意されています。 クエリのコンパイルと再コンパイルの回数、および SQL Server のインスタンスが受信するバッチの数を監視すると、SQL Server がユーザー クエリを処理する速度や、クエリ オプティマイザーによるクエリ処理の効果がわかります。
コンパイルは、クエリのターンアラウンド時間の大半を占めます。 コンパイルコストを節約するために、データベース エンジンはコンパイル済みのクエリプランをクエリキャッシュに保存します。 キャッシュはコンパイルされたクエリを後で再利用できるように保存することでコンパイルを短縮し、その後の実行でクエリを再コンパイルする必要をなくします。 ただし、一意のクエリはすべて、少なくとも 1 回コンパイルする必要があります。 以下の要因がクエリの再コンパイルを引き起こす可能性があります:
テーブルへの列またはインデックスの追加など、ベース スキーマの変更を含むスキーマの変更、またはテーブルに大量の行を挿入したり、テーブルから大量の行を削除することなどの統計スキーマの変更。
環境(
SET文)が変化します。ANSI_PADDINGやANSI_NULLSなどのセッション設定の変更により、クエリが再コンパイルされることがあります。
詳細については、以下を参照してください:
以下の表はSQL ServerのSQL統計カウンターを示しています。
| SQL Server SQL Statistics カウンター | 説明 |
|---|---|
| 自動パラメータ試行数/秒 | 1 秒あたりの自動パラメーター化が実行された数。 総数は、失敗した試行、安全な試行、および安全ではない試行の合計でなければなりません。 SQL Server のインスタンスにより、いくつかのリテラルをパラメーターに置き換えることによって Transact-SQL 要求のパラメーター化が試行されると、自動パラメーター化が発生します。複数の類似した要求で、結果としてキャッシュされた実行プランの再使用を可能にするためです。 自動パラメータ化は単純パラメータ化とも呼ばれます。 このカウンターには強制パラメータ化は含まれていません。 |
| バッチリクエスト数/秒数 | 1 秒あたりに受信した Transact-SQL コマンドのバッチの数。 この統計はI/O、ユーザー数、キャッシュサイズ、リクエストの複雑さなどのすべての制約に影響を受けます。 バッチ要求の数が多いことは、スループットが優れていることを意味します。 |
| 自動パラメータ/secの失敗 | 1 秒あたりの失敗した自動パラメーター化を実行した回数。 この値は小さくなければなりません。 自動パラメータ化は単純パラメータ化とも呼ばれます。 |
| 強制パラメータ化/秒 | 強制パラメーター化に成功した 1 秒あたりの回数。 |
| ガイド付きプラン実行数/秒 | プラン ガイドを使用してクエリ プランが生成された、1 秒あたりのプラン実行回数。 |
| 誤った計画実行数/秒 | プラン作成時にプランガイドを尊重できないプラン実行回数。 クエリオプティマイザーはプランガイドを無視し、通常のコンパイルで実行計画を作成しました。 |
| 安全な自動パラメータ/秒 | 1 秒あたりの安全な自動パラメーター化を実行した回数。 安全とは、キャッシュされた実行プランを、さまざまな類似する Transact-SQL ステートメント間で共有できるという判断のことを言います。 SQL Serverは多くの自動パラメータ化を試みます。 いくつかは安全で、またいくつかは失敗します。 自動パラメータ化は単純パラメータ化とも呼ばれます。 このカウンターには強制パラメータ化は含まれていません。 |
| SQL注意率 | 1 秒あたりのアテンションの数。 アテンションは、現在実行している要求を終了するために、クライアントから要求されます。 |
| SQL コンパイル/sec | 1 秒あたりの SQL コンパイルの回数。 コンパイル コード パスが入力された回数を示します。 SQL Server のステートメントレベルの再コンパイルによって発生したコンパイル回数を含みます。 SQL Server のユーザー利用状況が安定化すると、この値は定常状態に到達します。 |
| SQL再コンパイル/sec | 1 秒あたりのステートメントの再コンパイル回数。 ステートメントの再コンパイルがトリガーされた回数をカウントします。 一般に、再コンパイルは少なくする必要があります。 |
| 安全でない自動パラメータ/sec | 1 秒あたりの安全でない自動パラメーター化の回数。 たとえば、クエリには、キャッシュされたプランを共有できないいくつかの特性があります。 これらの特徴は安全でないと指定されています。 このカウントには強制的なパラメータ化の数は含まれていません。 |
Examples
このオブジェクトのクエリパフォーマンスカウンターを探索するには、 sys.dm_os_performance_counters 動的管理ビューで以下の Transact-SQL(T-SQL)クエリを実行します。
SELECT *
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%SQL Statistics%';