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

適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

クエリ実行を高速化するため 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_addresspool_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 DW)Azure Synapse Analytics (SQL DW)またはParallel Data WarehouseParallel Data Warehouse、名前を使用して、 sys.dm_pdw_nodes_exec_cached_plansします。To call this from Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) 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 プランおよびオブジェクト プランのキャッシュでは、最大 10007 32 ビット システムと 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 のキャッシュのハッシュ テーブルのサイズは最大 1009、32 ビット システムと 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 Plan

コンパイル済みプランのスタブCompiled Plan Stub

Parse TreeParse Tree

拡張プロシージャExtended Proc

CLR コンパイル FuncCLR Compiled Func

CLR コンパイル プロシージャCLR Compiled Proc
objtypeobjtype nvarchar(16)nvarchar(16) オブジェクトの種類。Type of object. 使用可能な値とその対応する説明を次に示します。Below are the possible values and their corresponding descriptions.

プロシージャ:ストアド プロシージャProc: Stored procedure
準備。準備済みステートメントPrepared: Prepared statement
Adhoc:アドホック クエリ。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:ユーザー テーブルUsrTab: User table
SysTab:システム テーブルSysTab: System table
確認してください。CHECK 制約Check: CHECK constraint
ルール:RuleRule: 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:

sys.dm_exec_sql_textsys.dm_exec_sql_text

sys.dm_exec_query_plansys.dm_exec_query_plan

sys.dm_exec_plan_attributessys.dm_exec_plan_attributes
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 DW)Azure Synapse Analytics (SQL DW)Parallel Data WarehouseParallel Data WarehouseApplies to: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW), Parallel Data WarehouseParallel Data Warehouse

この配布であるノードの識別子。The identifier for the node that this distribution is on.

11

アクセス許可Permissions

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

使用例Examples

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;  
GO  

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';  
GO  

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_optionssql_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;  
GO  

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';  
GO  

関連項目See Also

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