sys.dm_exec_cached_plans (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Microsoft Fabric

Returnerar en rad för varje frågeplan som cachelagras av SQL Server för snabbare frågeexekvering. Du kan använda denna dynamiska hanteringsvy för att hitta cachade frågeplaner, cachade frågetexter, mängden minne som cachade planer använder och återanvändningsräkningen av de cachade planerna.

I Azure SQL Database kan dynamiska hanteringsvyer inte exponera information som skulle påverka databasens inneslutning eller exponera information om andra databaser som användaren har åtkomst till. För att undvika att exponera denna information filtreras varje rad som innehåller data som inte tillhör den anslutna tenanten bort. Dessutom filtreras värdena i kolumnerna memory_object_address och pool_id ; kolumnvärdet sätts till NULL.

Anmärkning

Om du vill anropa detta från Azure Synapse Analytics eller Analytics Platform System (PDW) använder du namnet sys.dm_pdw_nodes_exec_cached_plans. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
Bucketid int ID för hashhinken där posten är cachad. Värdet anger ett intervall från 0 till hashtabellens storlek för cachetypen.

För SQL Plans- och Object Plans-cacher kan hashtabellstorleken vara upp till 10007 på 32-bitars system och upp till 40009 på 64-bitarssystem. För Bound Trees-cachen kan hashtabellstorleken vara upp till 1009 på 32-bitarssystem och upp till 4001 på 64-bitarssystem. För cachen Extended Stored Procedures kan hashtabellstorleken vara upp till 127 på 32- och 64-bitars system.
Omräkningar int Antal cacheobjekt som refererar till detta cacheobjekt. Refcounts måste vara minst 1 för att en post ska finnas i cachen.
Användningsräkningar int Antal gånger cacheobjektet har slagits upp. Inte ökade när parameteriserade frågor hittar en plan i cachen. Kan öka flera gånger när man använder Showplan.
size_in_bytes int Antal byte som förbrukas av cacheobjektet.
memory_object_address varbinary(8) Minnesadressen för den cachade posten. Detta värde kan användas med sys.dm_os_memory_objects för att få minnesuppdelningen för den cachade planen och med sys.dm_os_memory_cache_entries_entries för att få kostnaden för att cachelagra posten.
cacheobjtype Nvarchar(34) Typ av objekt i cachen. Värdet kan vara något av följande:

Sammanställd plan

Sammanställd planstub

Parseträd

Utökad proc

CLR kompilerad funk

CLR kompilerad proc
objtype nvarchar(16) Typ av objekt. Nedan följer de möjliga värdena och deras motsvarande beskrivningar.

Proc: Lagrad procedur
Förberedd: Förberedd uppgift
Adhoc: Ad hoc-fråga. Avser Transact-SQL skickas in som språkhändelser genom att använda osql eller sqlcmd istället för som fjärrproceduranrop.
ReplProc: Replikationsfilter-procedur
Trigger: Trigger
Vy: Vy
Standard: Standard
UsrTab: Användartabell
SysTab: Systemtabell
Kontrollera: KONTROLLERA begränsningen
Regel: Regel
plan_handle varbinary(64) Identifierare för den minnesinterna planen. Den här identifieraren är tillfälligt och förblir endast konstant när planen finns kvar i cacheminnet. Detta värde kan användas med följande dynamiska hanteringsfunktioner:

sys.dm_exec_sql_text

sys.dm_exec_query_plan

sys.dm_exec_plan_attributes
pool_id int ID:t för resurspoolen som denna planminnesanvändning räknas mot.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.

1

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Examples

A. Returnera batchtexten för cachade poster som återanvänds

Följande exempel returnerar SQL-texten för alla cachade poster som har använts mer än en gång.

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. Returnerar frågeplaner för alla cachade triggers

Följande exempel returnerar frågeplanerna för alla cachade 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. Att återlämna SET-alternativen som planen var sammanställd med

Följande exempel visar de SET-alternativ som planen sammanställdes med. Planen sql_handle återlämnas också. PIVOT-operatorn används för att mata set_options ut och sql_handle attributen som kolumner istället för som rader. För mer information om värdet som returneras i set_options, se 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. Återlämnar minnesuppdelningen av alla cachade kompilerade planer

Följande exempel ger en uppdelning av minnet som används av alla kompilerade planer i cachen.

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  

Se även

Vyer och funktioner för dynamisk hantering (Transact-SQL)
Körningsrelaterade vyer och funktioner för dynamisk hantering (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)
FRÅN (Transact-SQL)