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

SI APPLICA A: sìSQL Server sìAzure 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

Restituisce una riga per ogni piano di query memorizzato nella cache da SQL ServerSQL Server per velocizzare l'esecuzione di query.Returns a row for each query plan that is cached by SQL ServerSQL Server for faster query execution. È possibile utilizzare questa vista a gestione dinamica per trovare i piani di query memorizzati nella cache, il testo delle query memorizzato nella cache, la quantità di memoria utilizzata dai piani memorizzati nella cache e il numero di riutilizzi dei piani nella cache.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.

In database SQL di AzureAzure SQL Database, le viste a gestione dinamica non possono esporre le informazioni che influenzerebbero l'indipendenza del database o le informazioni sugli altri database a cui l'utente dispone di accesso.In database SQL di AzureAzure SQL Database, dynamic management views cannot expose information that would impact database containment or expose information about other databases the user has access to. Per evitare di esporre queste informazioni, ogni riga che contiene dati che non appartengono al tenant connesso viene filtrata. Inoltre, i valori nelle colonne memory_object_address e pool_id sono filtrati; il valore della colonna è impostato su 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.

Nota

Per chiamare questo oggetto Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) da Parallel Data WarehouseParallel Data Warehouseo, usare il nome 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.

Nome colonnaColumn name Tipo di datiData type DescrizioneDescription
bucketidbucketid intint ID dell'hash bucket in cui la voce viene memorizzata nella cache.ID of the hash bucket in which the entry is cached. Il valore indica un intervallo compreso tra 0 e le dimensioni della tabella hash per il tipo di cache.The value indicates a range from 0 through the hash table size for the type of cache.

Per le cache di tipo Piani SQL e Piani per gli oggetti, le dimensioni massime della tabella hash sono 10007 nei sistemi a 32 bit e 40009 nei sistemi a 64 bit.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. Per la cache di tipo Alberi associati, le dimensioni massime della tabella hash sono 1009 nei sistemi a 32 bit e 4001 nei sistemi a 64 bit.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. Per la cache di tipo Stored procedure estese, le dimensioni massime della tabella cache sono 127 nei sistemi a 32 e a 64 bit.For the Extended Stored Procedures cache the hash table size can be up to 127 on 32-bit and 64-bit systems.
refcountsrefcounts intint Numero di oggetti della cache che fanno riferimento a questo oggetto della cache.Number of cache objects that are referencing this cache object. RefCounts deve essere almeno 1 affinché una voce sia presente nella cache.Refcounts must be at least 1 for an entry to be in the cache.
usecountsusecounts intint Numeri di volte in cui l'oggetto della cache è stato ricercato.Number of times the cache object has been looked up. Non incrementato quando le query con parametri trovano un piano nella cache.Not incremented when parameterized queries find a plan in the cache. Può essere incrementato più volte quando si utilizza il piano Showplan.Can be incremented multiple times when using showplan.
size_in_bytessize_in_bytes intint Numero di byte utilizzati dall'oggetto della cache.Number of bytes consumed by the cache object.
memory_object_addressmemory_object_address varbinary (8)varbinary(8) Indirizzo di memoria della voce memorizzata nella cache.Memory address of the cached entry. È possibile utilizzare questo valore con sys.dm_os_memory_objects per recuperare la suddivisione di memoria del piano memorizzato nella cache e con sys.dm_os_memory_cache_entries per ottenere il costo della memorizzazione della voce nella cache.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) Tipo di oggetto nella cache.Type of object in the cache. Il valore può essere uno dei seguenti: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) Tipo di oggetto.Type of object. Di seguito sono riportati i valori possibili e le relative descrizioni.Below are the possible values and their corresponding descriptions.

Proc: stored procedureProc: Stored procedure
Preparato: istruzione preparataPrepared: Prepared statement
Adhoc: query ad hoc.Adhoc: Ad hoc query. Fa riferimento Transact-SQLTransact-SQL a eventi inviati come eventi di linguaggio utilizzando osql o SQLCMD anziché come chiamate di procedure remote.Refers to Transact-SQLTransact-SQL submitted as language events by using osql or sqlcmd instead of as remote procedure calls.
ReplProc: Replication-Filter-procedureReplProc: Replication-filter-procedure
Trigger: triggerTrigger: Trigger
Visualizzazione: visualizzazioneView: View
Impostazione predefinita: predefinitaDefault: Default
UsrTab: tabella utenteUsrTab: User table
SysTab: tabella di sistemaSysTab: System table
Check: vincolo CHECKCheck: CHECK constraint
Regola: regolaRule: Rule
plan_handleplan_handle varbinary (64)varbinary(64) Identificatore del piano in memoria.Identifier for the in-memory plan. Si tratta di un identificatore temporaneo, che rimane costante solo se il piano rimane nella cache.This identifier is transient and remains constant only while the plan remains in the cache. È possibile utilizzare questo valore con le funzioni a gestione dinamica seguenti: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 del pool di risorse in base a cui viene rilevato l'utilizzo della memoria del piano.The ID of the resource pool against which this plan memory usage is accounted for.
pdw_node_idpdw_node_id intint Si applica a: 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

Identificatore del nodo su cui si trova questa distribuzione.The identifier for the node that this distribution is on.

11

AutorizzazioniPermissions

In SQL ServerSQL Serverè richiesta VIEW SERVER STATE l'autorizzazione.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
Nei Database SQLSQL Database livelli Premium, richiede l' VIEW DATABASE STATE autorizzazione nel database.On Database SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. Nei Database SQLSQL Database livelli standard e Basic, richiede l' amministratore del server o un account amministratore Azure Active Directory .On Database SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

EsempiExamples

R.A. Restituzione del testo del batch per le voci memorizzate nella cache che vengono riutilizzateReturning the batch text of cached entries that are reused

Nell'esempio seguente viene restituito il testo SQL di tutte le voci memorizzate nella cache utilizzate più di una volta.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. Restituzione dei piani di query per tutti i trigger memorizzati nella cacheReturning query plans for all cached triggers

Nell'esempio seguente vengono restituiti i piani di query di tutti i trigger memorizzati nella cache.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. Restituzione delle opzioni SET con cui è stato compilato il pianoReturning the SET options with which the plan was compiled

Nell'esempio seguente vengono restituite le opzioni SET con cui è stato compilato il piano.The following example returns the SET options with which the plan was compiled. Viene sql_handle restituito anche l'oggetto per il piano.The sql_handle for the plan is also returned. L'operatore PIVOT viene utilizzato per restituire gli set_options attributi sql_handle e come colonne anziché come righe.The PIVOT operator is used to output the set_options and sql_handle attributes as columns rather than as rows. Per ulteriori informazioni sul valore restituito in set_options, vedere 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. Restituzione della suddivisione di memoria per tutti i piani compilati memorizzati nella cacheReturning the memory breakdown of all cached compiled plans

Nell'esempio seguente viene restituita una suddivisione della memoria utilizzata da tutti i piani compilati nella cache.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  

Vedere ancheSee Also

Funzioni e viste a gestione dinamica (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Funzioni e viste a gestione dinamica relative all'esecuzione (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)