dm_exec_cached_plans (Transact-sql)sys.dm_exec_cached_plans (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database

クエリ実行を高速化するため SQL ServerSQL Server でキャッシュされた各クエリ プランについての行を返します。Returns a row for each query plan that is cached by SQL ServerSQL Server for faster query execution. この動的管理ビューを使用して、キャッシュされたクエリ プラン、キャッシュされたクエリ テキスト、キャッシュされたプランが確保するメモリの量、およびキャッシュされたプランの再利用回数を参照できます。You can use this dynamic management view to find cached query plans, cached query text, the amount of memory taken by cached plans, and the reuse count of the cached plans.

Azure SQL データベースAzure SQL Database では、動的管理ビューは、データベースの包含に影響する情報を公開することも、ユーザーがアクセスできる他のデータベースに関する情報を公開することもできません。In Azure SQL データベースAzure SQL Database, dynamic management views cannot expose information that would impact database containment or expose information about other databases the user has access to. この情報を公開しないように、接続されたテナントに属していないデータを含むすべての行がフィルターで除外されます。さらに、列memory_object_addressおよびpool_idの値はフィルター処理されます。列の値が NULL に設定されています。To avoid exposing this information, every row that contains data that doesn't belong to the connected tenant is filtered out. In addition, the values in the columns memory_object_address and pool_id are filtered; the column value is set to NULL.


またはからこれを呼び出すに Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse)Parallel Data WarehouseParallel Data Warehousedm_pdw_nodes_exec_cached_plansという名前を使用します。To call this from Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) or Parallel Data WarehouseParallel Data Warehouse, use the name sys.dm_pdw_nodes_exec_cached_plans.

列名Column name データ型Data type 説明Description
bucketidbucketid intint エントリをキャッシュするハッシュ バケットの ID。ID of the hash bucket in which the entry is cached. 値の範囲は、0 からキャッシュの種類によって決まっているハッシュ テーブルのサイズまでです。The value indicates a range from 0 through the hash table size for the type of cache.

SQL プランおよびオブジェクト プランのキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システムで最大 10007、64 ビット システムで最大 40009 です。For the SQL Plans and Object Plans caches, the hash table size can be up to 10007 on 32-bit systems and up to 40009 on 64-bit systems. Bound Trees のキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システムで最大 1009、64 ビット システムで最大 4001 です。For the Bound Trees cache, the hash table size can be up to 1009 on 32-bit systems and up to 4001 on 64-bit systems. 拡張ストアド プロシージャのキャッシュでは、ハッシュ テーブルのサイズが 32 ビット システムでも 64 ビット システムでも 127 です。For the Extended Stored Procedures cache the hash table size can be up to 127 on 32-bit and 64-bit systems.
refcountsrefcounts intint このキャッシュ オブジェクトを参照しているキャッシュ オブジェクトの数。Number of cache objects that are referencing this cache object. エントリをキャッシュするには、refcounts を 1 以上にする必要があります。Refcounts must be at least 1 for an entry to be in the cache.
usecountsusecounts intint キャッシュ オブジェクトが検索された回数。Number of times the cache object has been looked up. パラメーター化クエリがキャッシュ内のプランを検索したときは増加しません。Not incremented when parameterized queries find a plan in the cache. プラン表示を使用しているときは複数回増加できます。Can be incremented multiple times when using showplan.
size_in_bytessize_in_bytes intint キャッシュ オブジェクトによって使用されたバイト数。Number of bytes consumed by the cache object.
memory_object_addressmemory_object_address varbinary (8)varbinary(8) キャッシュ エントリのメモリ アドレス。Memory address of the cached entry. この値は、sys.dm_os_memory_objects と併用してキャッシュされたプランのメモリ内訳を取得したり、sys.dm_os_memory_cache_entries と併用してエントリをキャッシュするコストを取得したりできます。This value can be used with sys.dm_os_memory_objects to get the memory breakdown of the cached plan and with sys.dm_os_memory_cache_entries_entries to obtain the cost of caching the entry.
cacheobjtypecacheobjtype nvarchar (34)nvarchar(34) キャッシュ内のオブジェクトの種類。Type of object in the cache. 値は次のいずれかになります。The value can be one of the following:

Compiled PlanCompiled Plan

Compiled Plan StubCompiled Plan Stub

Parse TreeParse Tree

Extended ProcExtended Proc

CLR Compiled FuncCLR Compiled Func

CLR Compiled ProcCLR Compiled Proc
objtypeobjtype nvarchar (16)nvarchar(16) オブジェクトの種類。Type of object. 有効な値とそれに対応する説明を次に示します。Below are the possible values and their corresponding descriptions.

Proc: ストアドプロシージャProc: Stored procedure
準備完了: 準備されたステートメントPrepared: Prepared statement
アドホック: アドホッククエリ。Adhoc: Ad hoc query. Transact-SQLTransact-SQLリモートプロシージャ呼び出しとしてではなくosqlまたはsqlcmdを使用して、言語イベントとして送信されたを示します。Refers to Transact-SQLTransact-SQL submitted as language events by using osql or sqlcmd instead of as remote procedure calls.
ReplProc: レプリケーション-フィルター-プロシージャReplProc: Replication-filter-procedure
トリガー: トリガーTrigger: Trigger
ビュー: 表示View: View
既定値: 既定Default: Default
UsrTab: User テーブルUsrTab: User table
SysTab: システムテーブルSysTab: System table
Check: CHECK 制約Check: CHECK constraint
ルール: ルールRule: Rule
plan_handleplan_handle varbinary(64)varbinary(64) インメモリ プランの識別子。Identifier for the in-memory plan. この識別子は一時的なもので、プランがキャッシュに残っている間だけ一定の値になります。This identifier is transient and remains constant only while the plan remains in the cache. この値は、次の動的管理関数で使用できます。This value may be used with the following dynamic management functions:



pool_idpool_id intint このプランのメモリ使用量の大部分を占めるリソース プールの ID。The ID of the resource pool against which this plan memory usage is accounted for.
pdw_node_idpdw_node_id intint 適用対象: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse)Parallel Data WarehouseParallel Data WarehouseApplies to: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse), Parallel Data WarehouseParallel Data Warehouse

このディストリビューションが配置されているノードの識別子。The identifier for the node that this distribution is on.



SQL ServerSQL Server は、 VIEW SERVER STATE 権限が必要です。On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
SQL DatabaseSQL DatabasePremium レベルでは、データベースの権限が必要です VIEW DATABASE STATEOn SQL DatabaseSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. SQL DatabaseSQL DatabaseStandard レベルおよび Basic レベルでは、サーバー管理者またはAzure Active Directory 管理者アカウントが必要です。On SQL DatabaseSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.


A.A. 再利用されたキャッシュエントリのバッチテキストを返すReturning the batch text of cached entries that are reused

次の例は、複数回使用されたすべてのキャッシュ エントリの SQL テキストを返します。The following example returns the SQL text of all cached entries that have been used more than once.

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;  

B:B. キャッシュされたすべてのトリガーのクエリプランを返すReturning query plans for all cached triggers

次の例は、キャッシュされたすべてのトリガーのクエリ プランを返します。The following example returns the query plans of all cached triggers.

SELECT plan_handle, query_plan, objtype   
FROM sys.dm_exec_cached_plans   
CROSS APPLY sys.dm_exec_query_plan(plan_handle)   
WHERE objtype ='Trigger';  

C:C. プランがコンパイルされた SET オプションを取得するReturning the SET options with which the plan was compiled

次の例は、プランをコンパイルした SET オプションを返します。The following example returns the SET options with which the plan was compiled. sql_handleプランのも返されます。The sql_handle for the plan is also returned. PIVOT 演算子は、 set_options sql_handle 属性と属性を行ではなく列として出力するために使用されます。The PIVOT operator is used to output the set_options and sql_handle attributes as columns rather than as rows. で返される値の詳細については set_options 、「 sys. Dm_exec_plan_attributes (transact-sql)」を参照してください。For more information about the value returned in set_options, see sys.dm_exec_plan_attributes (Transact-SQL).

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;  

D:D. キャッシュされたすべてのコンパイル済みプランのメモリ内訳を返すReturning the memory breakdown of all cached compiled plans

次の例は、キャッシュにあるすべてのコンパイル済みプランのメモリ内訳を返します。The following example returns a breakdown of the memory used by all compiled plans in the cache.

SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject,   
    omo.memory_object_address, 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';  

関連項目See Also

Transact-sql)(の動的管理ビューおよび関数 Dynamic Management Views and Functions (Transact-SQL)
実行関連の動的管理ビューおよび関数 (Transact-sql) Execution Related Dynamic Management Views and Functions (Transact-SQL)
dm_exec_query_plan (Transact-sql) sys.dm_exec_query_plan (Transact-SQL)
dm_exec_plan_attributes (Transact-sql) sys.dm_exec_plan_attributes (Transact-SQL)
dm_exec_sql_text (Transact-sql) sys.dm_exec_sql_text (Transact-SQL)
dm_os_memory_objects (Transact-sql) sys.dm_os_memory_objects (Transact-SQL)
dm_os_memory_cache_entries (Transact-sql) sys.dm_os_memory_cache_entries (Transact-SQL)
FROM (Transact-SQL)FROM (Transact-SQL)