SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2022 で実装された PSP optimization の挙動を把握するために参考にする情報

leave a comment

SQL Server 2022 の Intelligent query processing では、PSP optimization というクエリ最適化の処理が実装されました。

この機能はパラメーター スニッフィングに対する最適化として期待されるものとなり、パラメーターによって実行プランが大きく異なるケースで、パラメーターの値範囲に応じた実行プランを生成してくれるものとなります。

この機能が使用されているかを確認する際には、どの情報を参照すればよいのかを調べる機会がありましたのでまとめておきたいと思います。

PSP optimization の挙動を把握するための情報

拡張イベント

PSP optimization 向けに次のような拡張イベントが提供されており、これらの拡張イベントの情報を取得することで、挙動についての情報を確認することができます。

image

この拡張イベントを確認することで、PSP optimization によりクエリの最適化が行われたか / スキップされた場合はどのような理由によりスキップされたかを確認することができます。

image

SQL Server 2025 では、スキップされる理由としては次のような条件があり、この条件に合致している場合は PSP optimization による最適化がスキップされます。

image

 

システムビュー

そのほかには、sys.query_store_query_variant も活用することができます。

PSP optimization によってクエリの最適化が行われると、このシステムビューにディスパッチャープランと子のクエリと確認することができます。

image

親のクエリとして クエリ ID 11 がディスパッチャープランとして設定されており、子のクエリとして 29~31 のクエリが設定されていることが確認できます。

クエリ ID 11 の実行プランとしては、PSP optimization により複数のプランが存在することを示すディスパッチャープランが設定された状態となります。

image

実際に使用される実行プランとしては、パラメーターに応じて次のようなプランが生成されていることが確認できます。

image

PSP optimization では、パラメーターの範囲に応じて 3 種類のプランが生成されています。

PSP optimization の対象取る述語数によって生成されるプラン数が変わりますが、単一のパラメーターであれば、データの範囲に応じて、通常は 3 パターンのプランが生成されるはずです。

 

PSP optimization の挙動を把握する際にはこれらの情報を確認し、既に有効されている環境であれば、システムビューから PSP optimization が使用されているかを確認するとよいのではないでしょうか。

Share

Written by Masayuki.Ozawa

9月 8th, 2026 at 8:39 am

Leave a Reply