Sdílet prostřednictvím


sys.dm_exec_cached_plans (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrací řádek pro každý plán dotazů, který je uložen v SQL Serveru pro rychlejší provádění dotazů. Tento dynamický pohled správy můžete použít k nalezení cacheovaných plánů dotazů, cacheovaných textů dotazů, množství paměti zabírané cacheovanými plány a počtu opakovaných použití cacheovaných plánů.

V Azure SQL Database nemůžou zobrazení dynamické správy zveřejnit informace, které by ovlivnily zahrnutí databáze nebo zpřístupňují informace o jiných databázích, ke kterým má uživatel přístup. Aby se předešlo vystavení těchto informací, je filtrován každý řádek obsahující data, která nepatří připojenému tenantovi. Kromě toho jsou hodnoty ve sloupcích memory_object_address a pool_id filtrovány; hodnota sloupce je nastavena na NULL.

Poznámka:

Pokud to chcete volat ze služby Azure Synapse Analytics nebo systému PDW (Analytics Platform System), použijte název sys.dm_pdw_nodes_exec_cached_plans. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Název sloupce Datový typ Description
bucketid int ID hashovacího kbelíku, ve kterém je záznam uložen. Hodnota označuje rozsah od 0 až po velikost hashovací tabulky pro typ cache.

Pro cache SQL Plans a Object Plans může být velikost hash tabulky až 10007 na 32bitových systémech a až 40009 na 64bitových systémech. Pro cache Bound Trees může velikost hashovací tabulky být až 1009 na 32bitových systémech a až 4001 na 64bitových systémech. Pro cache Extended Stored Procedures může velikost hashovací tabulky být až 127 na 32bitových a 64bitových systémech.
Refcounty int Počet cache objektů, které odkazují na tento cache objekt. Počet referencí musí být alespoň 1, aby se záznam mohl nacházet v cache.
Počet použití int Počet vyhledávání objektu cache. Nezvyšuje to, když parametrizované dotazy najdou plán v cache. Při použití showplanu lze to několikrát zvýšit.
size_in_bytes int Počet bajtů spotřebovaných objektem cache.
memory_object_address varbinary(8) Paměťová adresa uloženého záznamu. Tuto hodnotu lze použít s sys.dm_os_memory_objects k získání rozdělení paměti cacheovaného plánu a s sys.dm_os_memory_cache_entries_entries pro získání nákladů na cachování záznamu.
cacheobjtype nvarchar(34) Typ objektu v cache. Hodnota může být jedna z následujících možností:

Zkompilovaný plán

Zkompilovaný plánový stub

Strom parse

Rozšířený proces

CLR Kompilovaný Func

CLR Compiled Proc
Objtype nvarchar(16) Typ objektu. Níže jsou uvedeny možné hodnoty a jejich odpovídající popisy.

Proc: Uložená procedura
Připraveno: Připravené prohlášení
Adhoc: Ad hoc dotaz. Označuje Transact-SQL zasílané jako jazykové události pomocí oSQL nebo sqlcmd místo vzdálených volání procedur.
ReplProc: Replikace-filtr-procedura
Spouštěč: Spouštěč
Zobrazit: Zobrazit
Výchozí: Výchozí
UsrTab: Uživatelská tabulka
SysTab: Systémová tabulka
Check: CHECK omezení
Pravidlo: Pravidlo
plan_handle varbinary(64) Identifikátor plánu v paměti. Tento identifikátor je přechodný a zůstává konstantní pouze v době, kdy plán zůstává v mezipaměti. Tato hodnota může být použita s následujícími dynamickými správcovskými funkcemi:

sys.dm_exec_sql_text

sys.dm_exec_query_plan

sys.dm_exec_plan_attributes
pool_id int ID zdrojového fondu, proti kterému je tato paměťová spotřeba plánu zohledněna.
pdw_node_id int Platí na: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifikátor uzlu, na který je tato distribuce zapnutá.

1

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Examples

A. Vrácení dávkového textu uložených položek, které jsou znovu použity

Následující příklad vrací SQL text všech uložených záznamů, které byly použity vícekrát.

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. Vracení plánů dotazů pro všechny cacheované triggery

Následující příklad vrací plány dotazů všech cacheovaných spouštěčů.

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. Vrácení možností SET, se kterými byl plán sestaven

Následující příklad vrací možnosti SET, se kterými byl plán zkompilován. Plán sql_handle je také vrácen. Operátor PIVOT se používá k výstupu atributů set_options a sql_handle jako sloupců místo jako řádků. Pro více informací o hodnotě vrácené v set_options, viz 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. Vrácení rozpisu všech zkompilovaných plánů v cache

Následující příklad vrací rozpis paměti používané všemi zkompilovanými plány v 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  

Viz také

Zobrazení a funkce dynamické správy (Transact-SQL)
zobrazení a funkce související se spouštěním dynamické správy (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_plan_attributes (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_os_memory_objects (Transact-SQL)
sys.dm_os_memory_cache_entries (Transact-SQL)
FROM (Transact-SQL)