Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Zwraca wiersz dla każdego planu zapytań, który jest buforowany przez SQL Server dla szybszego wykonywania zapytań. Możesz użyć tego dynamicznego widoku zarządzania, aby znaleźć plany zapytań w pamięci podręcznej, tekst zapytań w pamięci podręcznej, ilość pamięci zajmowanej przez plany buforowane oraz liczbę ponownych użycia tych planów.
W usłudze Azure SQL Database dynamiczne widoki zarządzania nie mogą ujawniać informacji, które mają wpływ na zawieranie bazy danych lub uwidacznianie informacji o innych bazach danych, do których użytkownik ma dostęp. Aby uniknąć ujawniania tych informacji, każdy wiersz zawierający dane nienależące do połączonego tenanta jest filtrowany. Dodatkowo wartości w kolumnach memory_object_address i pool_id są filtrowane; wartość kolumny jest ustawiona na NULL.
Uwaga / Notatka
Aby wywołać to z usługi Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_exec_cached_plans. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| bucketid | int | ID wiadra z hashem, w którym wpis jest buforowany. Wartość ta wskazuje zakres od 0 aż do rozmiaru tabeli skrótu dla typu pamięci podręcznej. W cache SQL Plans i Object Plans rozmiar tablicy skrótu może wynosić do 10007 na systemach 32-bitowych i do 40009 na systemach 64-bitowych. Dla pamięci podręcznej Bound Trees rozmiar tablicy skrótu może wynosić do 1009 na systemach 32-bitowych i do 4001 na systemach 64-bitowych. Dla pamięci podręcznej rozszerzonych procedur przechowywanych rozmiar tabeli skrótu może wynosić do 127 na systemach 32-bitowych i 64-bitowych. |
| Liczenia | int | Liczba obiektów cache odwołujących się do tego obiektu cache. Liczba referencji musi wynosić co najmniej 1, aby wpis znalazł się w pamięci podręcznej. |
| Liczba zastosowań | int | Liczba razy, gdy obiekt pamięci podręcznej był sprawdzany. Nie zwiększa się, gdy parametryzowane zapytania znajdują plan w pamięci podręcznej. Można to zwiększać wielokrotnie przy użyciu showplan. |
| size_in_bytes | int | Liczba bajtów zużywanych przez obiekt pamięci podręcznej. |
| memory_object_address | varbinary(8) | Adres pamięci wpisu w pamięci podręcznej. Wartość tę można użyć z sys.dm_os_memory_objects do uzyskania podziału pamięci planu buforowanego oraz sys.dm_os_memory_cache_entries_entries do uzyskania kosztu buforowania wpisu. |
| cacheobjtype | nvarchar(34) | Typ obiektu w pamięci podręcznej. Wartość może być jedną z następujących wartości: Plan skompilowany Skompilowany plan zalążek Drzewo parsowania Extended Proc Skompilowany funkc CLR Procedura skompilowana CLR |
| Objtype | nvarchar(16) | Typ obiektu. Poniżej znajdują się możliwe wartości oraz odpowiadające im opisy. Proc: Procedura przechowywana Przygotowany: Przygotowane oświadczenie Ad-hoc: Zapytanie ad hoc. Odnosi się do Transact-SQL przesyłanych jako zdarzenia językowe za pomocą osql lub sqlcmd zamiast zdalnych wywołań procedur. ReplProc: Replikacja-filtr-procedura Wyzwalacz: Wyzwalacz Widok: Widok Domyślne: Domyślne UsrTab: Tabela użytkownika SysTab: Tabela systemowa Sprawdź: CHECK ograniczenie Zasada: Zasada |
| plan_handle | varbinary(64) | Identyfikator planu w pamięci. Ten identyfikator jest przejściowy i pozostaje stały tylko wtedy, gdy plan pozostaje w pamięci podręcznej. Ta wartość może być używana z następującymi funkcjami zarządzania dynamicznego: sys.dm_exec_sql_text sys.dm_exec_query_plan sys.dm_exec_plan_attributes |
| pool_id | int | ID puli zasobów, na której uwzględniane jest zużycie pamięci planu. |
| pdw_node_id | int |
Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW) Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. |
1
Permissions
W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.
W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Przykłady
A. Zwracanie tekstu wsadowego z buforowanych wpisów, które są ponownie używane
Poniższy przykład zwraca tekst SQL wszystkich wpisów w pamięci podręcznej, które były używane więcej niż raz.
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. Zwracanie planów zapytań dla wszystkich buforowanych wyzwalaczy
Poniższy przykład zwraca plany zapytań wszystkich buforowanych wyzwalaczy.
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. Zwracając opcje SET, z którymi skompilowano plan
Poniższy przykład zwraca opcje SET, z którymi skompilowano plan. Plan sql_handle jest również zwrócony. Operator PIVOT służy do wypisywania atrybutów i set_optionssql_handle jako kolumn, a nie wierszy. Więcej informacji o wartości zwracanej w set_options, zobacz 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. Zwracanie rozkładu pamięci wszystkich buforowanych skompilowanych planów
Poniższy przykład zwraca podział pamięci używanej przez wszystkie skompilowane plany w pamięci podręcznej.
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
Zobacz też
Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (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)