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 を使用した場合、キャッシュが大きいために他のメモリ コンシューマー (バッファー プールなど) で利用できるメモリが少なくなると、パフォーマンスが低下することがあります。

関連項目

参照

sys.dm_exec_cached_plans (Transact-SQL)

概念

サーバー構成オプション