sys.dm_exec_cached_plans
更新 : 2006 年 12 月 12 日
クエリ実行を高速化するため SQL Server でキャッシュされた各クエリ プランについての行を返します。この動的管理ビューを使用して、キャッシュされたクエリ プラン、キャッシュされたクエリ テキスト、キャッシュされたプランが確保するメモリの量、およびキャッシュされたプランの再利用回数を参照できます。
メモ : |
---|
クエリ プランに関して、sys.dm_exec_cached_plans 動的管理ビューは SQL Server 2000 の syscacheobjects システム テーブルに対応します。 |
列名
データ型
説明
bucketid
int
エントリをキャッシュするハッシュ バケットの ID。値の範囲は、0 からキャッシュの種類によって決まっているハッシュ テーブルのサイズまでです。
SQL プランおよびオブジェクト プランのキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システムで最大 10007、64 ビット システムで最大 40009 です。Bound Trees のキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システムで最大 1009、64 ビット システムで最大 4001 です。拡張ストアド プロシージャのキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システム、64 ビット システム共に 127 です。キャッシュの種類とハッシュ テーブルの詳細については、「sys.dm_os_memory_cache_hash_tables」を参照してください。
refcounts
int
このキャッシュ オブジェクトを参照しているキャッシュ オブジェクトの数。エントリをキャッシュするには、refcounts を 1 以上にする必要があります。
usecounts
int
キャッシュ オブジェクトが開始時から使用された回数。
size_in_bytes
int
キャッシュ オブジェクトによって使用されたバイト数。
memory_object_address
varbinary(8)
キャッシュ エントリのメモリ アドレス。この値は、sys.dm_os_memory_objects と併用してキャッシュされたプランのメモリ内訳を取得したり、sys.dm_os_memory_cache_entries と併用してエントリをキャッシュするコストを取得したりできます。
cacheobjtype
nvarchar(34)
キャッシュ内のオブジェクトの種類。値は次のいずれかになります。
- Compiled Plan
- Parse Tree
- Extended Proc
- CLR Compiled Func
- CLR Compiled Proc
objtype
nvarchar(16)
オブジェクトの種類。値は次のいずれかになります。
値
説明
Procストアド プロシージャ
Prepared準備されたステートメント
Adhocアドホック クエリ1
ReplProcレプリケーション フィルタ プロシージャ
Triggerトリガ
Viewビュー
Default既定値
UsrTabユーザー テーブル
SysTabシステム テーブル
CheckCHECK 制約
Ruleルール
plan_handle
varbinary(64)
インメモリ プランの識別子。この識別子は一時的なもので、プランがキャッシュに残っている間だけ一定の値になります。この値は、次の動的管理関数で使用できます。
1 リモート プロシージャ呼び出しとしてではなく、osql または sqlcmd によって言語イベントとして送信された Transact-SQL。
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
例
A. 再利用されたキャッシュ エントリのバッチ テキストを取得する
次の例は、複数回使用されたすべてのキャッシュ エントリの SQL テキストを返します。
SELECT usecounts, cacheobjtype, objtype, text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE usecounts > 1
ORDER BY usecounts DESC;
GO
B. キャッシュされたすべてのトリガのクエリ プランを取得する
次の例は、キャッシュされたすべてのトリガのクエリ プランを返します。
SELECT plan_handle, query_plan, objtype
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE objtype ='Trigger';
GO
C. プランをコンパイルした SET オプションを取得する
次の例は、プランをコンパイルした SET オプションを返します。プランの sql
_handle
も返されます。PIVOT 演算子を使用すると、set
_options
属性と sql
_handle
属性を行ではなく列として出力できます。set
_options
の返す値の詳細については、「sys.dm_exec_plan_attributes」を参照してください。
SELECT plan_handle, pvt.set_options, pvt.sql_handle
FROM (
SELECT plan_handle, epa.attribute, epa.value
FROM sys.dm_exec_cached_plans
OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
WHERE cacheobjtype = 'Compiled Plan'
) AS ecpa
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;
GO
D. キャッシュされたすべてのコンパイル済みプランのメモリ内訳を取得する
次の例は、キャッシュにあるすべてのコンパイル済みプランのメモリ内訳を返します。
SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject,
omo.memory_object_address, pages_allocated_count, type, page_size_in_bytes
FROM sys.dm_exec_cached_plans AS ecp
JOIN sys.dm_os_memory_objects AS omo
ON ecp.memory_object_address = omo.memory_object_address
OR ecp.memory_object_address = omo.parent_address
WHERE cacheobjtype = 'Compiled Plan';
GO
参照
関連項目
動的管理ビューと動的管理関数
実行関連の動的管理ビューおよび関数
sys.dm_exec_query_plan
sys.dm_exec_plan_attributes
sys.dm_exec_sql_text
sys.dm_os_memory_objects
sys.dm_os_memory_cache_entries
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|
2005 年 12 月 5 日 |
|