optimize for ad hoc workloads オプション

optimize for ad hoc workloads オプションを使用すると、1 回のみ使用するアドホック バッチが多数含まれているワークロードのプラン キャッシュの効率を高めることができます。このオプションを 1 に設定すると、データベース エンジンでは、バッチが初めてコンパイルされるときに、完全なコンパイル済みプランではなく、コンパイル済みプランの小さいスタブをプラン キャッシュに格納します。これにより、再利用されないコンパイル済みプランでプラン キャッシュがいっぱいにならないようにして、メモリの負荷を下げることができます。

コンパイル済みプランのスタブを使用すると、データベース エンジンは、このアドホック バッチが既にコンパイルされているが、コンパイル済みプランのスタブしか格納していないと認識します。そのため、このバッチが再度呼び出される (コンパイルまたは実行される) と、データベース エンジンでは、バッチがコンパイルされ、コンパイル済みプランのスタブがプラン キャッシュから削除され、完全なコンパイル済みプランがプラン キャッシュに追加されます。

optimize for ad hoc workloads を 1 に設定すると、新しいプランのみに影響します。プラン キャッシュ内の既存のプランには影響しません。

コンパイル済みプランのスタブは、sys.dm_exec_cached_plans カタログ ビューによって表示される cacheobjtypes の 1 つです。これには、一意の SQL ハンドルとプラン ハンドルが含まれています。コンパイル済みプランのスタブには、関連付けられた実行プランがないため、プラン ハンドルに対してクエリを実行しても、XML プラン表示は返されません。

トレース フラグ 8032 は、キャッシュ制限パラメーターを、一般的にキャッシュを拡大できる SQL Server 2005 RTM 設定に戻します。この設定は、頻繁に再利用されるキャッシュ エントリがキャッシュに収まらない場合や、optimize for ad hoc workloads オプションでプラン キャッシュの問題を解決できなかった場合に使用します。

注記注意

キャッシュが大きくなり、バッファー プールなどの他のメモリ コンシューマーに利用できるメモリが少なくなると、トレース フラグ 8032 によってパフォーマンスが低下する場合があります。