SQL Server の SQLServer:SQL Statistics オブジェクトには、コンパイルを監視するためのカウンターと、SQL Server のインスタンスに送信される要求の種類が用意されています。 クエリのコンパイルおよび再コンパイルの回数や特定の SQL Server インスタンスが受け取るバッチの数を監視すると、SQL Server におけるユーザー クエリの処理速度やクエリ オプティマイザーにおけるクエリの処理効率を示す指標を得ることができます。
コンパイルは、クエリのターンアラウンド時間の重要な部分です。 コンパイル コストを節約するために、データベース エンジンはコンパイル済みのクエリ プランをクエリ キャッシュに保存します。 キャッシュの目的は、後で再利用するためにコンパイル済みクエリを格納してコンパイルを減らすことです。そのため、後で実行されたときにクエリを再コンパイルする必要がなくなります。 ただし、一意の各クエリは少なくとも 1 回はコンパイルする必要があります。 クエリの再コンパイルは、次の要因によって発生する可能性があります。
テーブルへの列やインデックスの追加などの基本スキーマの変更や、テーブルからの大量の行の挿入や削除などの統計スキーマの変更など、スキーマの変更。
環境 (SET ステートメント) が変更されました。 ANSI_PADDINGやANSI_NULLSなどのセッション設定を変更すると、クエリが再コンパイルされる可能性があります。
単純パラメーター化と強制パラメーター化の詳細については、 ALTER DATABASE (Transact-SQL) を参照してください。
これらは SQL Server SQL 統計 カウンターです。
SQL Server SQL 統計カウンター | 説明 |
---|---|
自動パラメーター試行/秒 | 1 秒あたりの自動パラメーター化試行回数。 合計は、失敗した、安全な、安全でない自動パラメーター化の合計である必要があります。 自動パラメーター化は、SQL Server のインスタンスが、いくつかのリテラルをパラメーターに置き換えて Transact-SQL 要求をパラメーター化しようとしたときに発生し、結果としてキャッシュされた実行プランを複数の類似した要求で再利用できるようにします。 自動パラメーター化は、新しいバージョンの SQL Server では単純なパラメーター化とも呼ばれます。 このカウンターには、強制パラメーター化は含まれません。 |
バッチリクエスト/秒 | 1 秒あたりに受信した Transact-SQL コマンド バッチの数。 この統計情報は、すべての制約 (I/O、ユーザー数、キャッシュ サイズ、要求の複雑さなど) の影響を受けます。 バッチ要求が多いということは、スループットが良いということです。 |
自動パラメータの失敗/秒 | 1 秒あたりの自動パラメーター化試行の失敗回数。 これは小さいべきです。 自動パラメーター化は、新しいバージョンの SQL Server では単純なパラメーター化とも呼ばれます。 |
強制パラメトリゼーション/秒 | 1 秒あたりの強制パラメーター化が成功した数。 |
ガイド付きプランの実行数/秒 | プラン ガイドを使用してクエリ プランが生成された 1 秒あたりのプラン実行数。 |
誤ったプランの実行数/秒 | 1 秒あたりのプラン実行数で、プラン生成時にプラン ガイドが順守されなかったもの。 プラン ガイドは無視され、通常のコンパイルを使用して実行されたプランが生成されました。 |
Safe Auto-Params/sec | 1 秒あたりの安全な自動パラメーター化の試行回数。 セーフとは、キャッシュされた実行プランを、似た見た目の異なる Transact-SQL ステートメント間で共有できることを示します。 SQL Server では、多くの自動パラメーター化の試行が行われ、その一部が安全であることが判明し、他の試行は失敗します。 自動パラメーター化は、新しいバージョンの SQL Server では単純なパラメーター化とも呼ばれます。 これには、強制パラメーター化は含まれません。 |
SQL アテンション率 | 1秒あたりの注目数。 注意は、現在実行中の要求を終了するクライアントによる要求です。 |
SQL コンパイル数/秒 | 1 秒あたりの SQL コンパイルの数。 コンパイル コード パスが入力された回数を示します。 SQL Server でのステートメント レベルの再コンパイルによって発生するコンパイルが含まれます。 SQL Server ユーザー アクティビティが安定すると、この値は安定した状態に達します。 |
SQL 再コンパイル/秒 | 1 秒あたりのステートメントの再コンパイル数。 ステートメントの再コンパイルがトリガーされる回数をカウントします。 一般に、再コンパイルを低くする必要があります。 |
安全でない自動パラメータ/秒 | 1 秒あたりの安全でない自動パラメーター化の試行回数。 たとえば、クエリには、キャッシュされたプランの共有を妨げるいくつかの特性があります。 これらは安全でないと指定されます。 強制パラメーター化の数はカウントされません。 |