Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
Geeft een rij terug voor elk queryplan die door SQL Server wordt gecachet voor snellere query-uitvoering. Je kunt deze dynamische beheerweergave gebruiken om gecachte queryplannen, gecachte querytekst, de hoeveelheid geheugen die door gecachte plannen wordt gebruikt en het hergebruikaantal van de gecachte plannen te vinden.
In Azure SQL Database kunnen dynamische beheerweergaven geen informatie weergeven die van invloed is op databaseinsluiting of informatie weergeven over andere databases waartoe de gebruiker toegang heeft. Om te voorkomen dat deze informatie wordt blootgesteld, wordt elke rij die data bevat die niet bij de verbonden tenant hoort, eruit gefilterd. Daarnaast worden de waarden in de kolommen memory_object_address en pool_id gefilterd; de kolomwaarde wordt ingesteld op NULL.
Opmerking
Gebruik de naam sys.dm_pdw_nodes_exec_cached_plansom dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW). Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| bucketid | int | ID van de hash bucket waarin de invoer wordt gecachet. De waarde geeft een bereik aan van 0 tot de hashtabelgrootte voor het type cache. Voor de SQL Plans- en Object Plans-caches kan de hashtabel op 32-bits systemen tot 10007 zijn en tot 40009 op 64-bit systemen. Voor de Bound Trees-cache kan de hashtabel op 32-bits systemen tot 1009 zijn en tot 4001 op 64-bits systemen. Voor de Extended Stored Procedures-cache kan de hashtabel tot 127 zijn op 32-bits en 64-bit systemen. |
| hertellingen | int | Aantal cacheobjecten die naar dit cacheobject verwijzen. Refcounts moeten minstens 1 zijn om een entry in de cache te krijgen. |
| Usecounts | int | Aantal keren dat het cacheobject is opgezocht. Niet verhoogd wanneer geparametriseerde queries een plan in de cache vinden. Kan meerdere keren worden verhoogd bij gebruik van Showplan. |
| size_in_bytes | int | Aantal bytes dat door het cacheobject wordt verbruikt. |
| memory_object_address | varbinary(8) | Geheugenadres van de gecachte invoer. Deze waarde kan met sys.dm_os_memory_objects worden gebruikt om de geheugenuitsplitsing van het gecachte plan te krijgen en met sys.dm_os_memory_cache_entries_entries om de kosten van het cachen van de entry te bepalen. |
| cacheobjtype | Nvarchar(34) | Type object in de cache. De waarde kan een van de volgende zijn: Samengesteld Plan Samengesteld Plan Stub Parseboom Uitgebreide Proc CLR Gecompileerde Func CLR Gecompileerde Proc |
| objtype | nvarchar(16) | Type van object. Hieronder staan de mogelijke waarden en hun bijbehorende beschrijvingen. Proc: Opgeslagen procedure Voorbereid: Voorbereide verklaring Adhoc: Ad hoc zoekopdracht. Verwijst naar Transact-SQL als taalgebeurtenissen worden ingediend door osql of sqlcmd te gebruiken in plaats van als remote procedure-aanroepen. ReplProc: Replicatiefilter-procedure Trigger: Trigger Bekijken: Bekijken Standaard: Standaard UsrTab: Gebruikerstabel SysTab: Systeemtabel Check: CONTROLEER beperking Regel: Regel |
| plan_handle | varbinary(64) | Identificator voor het in-memory plan. Deze id is tijdelijk en blijft alleen constant terwijl het plan in de cache blijft. Deze waarde kan worden gebruikt met de volgende dynamische beheerfuncties: sys.dm_exec_sql_text sys.dm_exec_query_plan sys.dm_exec_plan_attributes |
| pool_id | int | De ID van de resourcepool waarvoor het geheugengebruik van dit plan wordt meegenomen. |
| pdw_node_id | int |
Van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW) De id voor het knooppunt waarop deze distributie zich bevindt. |
1
Permissions
Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .
Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.
Machtigingen voor SQL Server 2022 en hoger
Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.
Voorbeelden
Eén. Het retourneren van batchtekst van gecachte items die hergebruikt worden
Het volgende voorbeeld geeft de SQL-tekst terug van alle gecachte vermeldingen die meer dan eens zijn gebruikt.
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. Terugkerende queryplannen voor alle gecachte triggers
Het volgende voorbeeld geeft de queryplannen van alle gecachte triggers terug.
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. Het teruggeven van de SET-opties waarmee het plan is samengesteld
Het volgende voorbeeld geeft de SET-opties terug waarmee het plan is samengesteld. Het sql_handle plan wordt ook teruggegeven. De PIVOT-operator wordt gebruikt om de set_options en-attributen sql_handle als kolommen uit te geven in plaats van als rijen. Voor meer informatie over de waarde die in set_optionswordt teruggegeven, zie 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. Het teruggeven van de geheugenuitsplitsing van alle gecachte gecompileerde plannen
Het volgende voorbeeld geeft een overzicht van het geheugen dat door alle gecompileerde plannen in de cache wordt gebruikt.
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
Zie ook
Dynamische beheerweergaven en -functies (Transact-SQL)
uitvoeringsgerelateerde dynamische beheerweergaven en -functies (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)
VAN (Transact-SQL)