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 den här informationen filtreras varje rad som innehåller data som inte tillhör den anslutna klientorganisationen bort. Dessutom filtreras värdena i kolumnerna memory_object_address och pool_id . kolumnvärdet är inställt på 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 CACHEminnen för SQL-planer och objektplaner kan hashtabellstorleken vara upp till 10 007 på 32-bitarssystem och upp till 40 009 på 64-bitarssystem. För cacheminnet För bundna träd kan hashtabellens storlek vara upp till 1 009 på 32-bitarssystem och upp till 4 001 på 64-bitarssystem. För cachen Extended Stored Procedures kan hashtabellstorleken vara upp till 127 på 32- och 64-bitars system.
refcounts int Antal cacheobjekt som refererar till detta cacheobjekt. refcounts måste vara minst 1 för att en post ska finnas i cacheminnet.
usecounts 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:

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
Ad hoc: 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
Utlösare: Utlösare
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. Det här värdet 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 Identifieraren för noden som den här fördelningen är på.

gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Permissions

SQL Server 2019 (15.x) och tidigare versioner kräver VIEW SERVER STATE behörighet.

SQL Server 2022 (16.x) och senare versioner och Azure SQL Managed Instance kräver VIEW SERVER PERFORMANCE STATE behörighet.

I tjänstmålen för Azure SQL Database Basic, S0 och S1 och för databaser i elastiska pooler krävs serveradministratörskontot, Microsoft Entra-administratörskontot eller medlemskap i ##MS_ServerStateReader##. 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.

Examples

A. Returnera batchtexten för cachelagrade 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;

B. Returnera frågeplaner för alla cachelagrade utlösare

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

C. Returnera de SET-alternativ som planen kompilerades med

I följande exempel returneras de SET alternativ som planen kompilerades med. Planen sql_handle återlämnas också. Operatorn PIVOT används för att mata ut attributen set_options och sql_handle som kolumner i stället för som rader. Mer information om värdet som returneras i finns i set_optionssys.dm_exec_plan_attributes.

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. Returnera minnesuppdelningen för alla cachelagrade 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
     INNER 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';