Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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ąć uwidaczniania tych informacji, każdy wiersz zawierający dane, które nie należą do połączonej dzierżawy, jest filtrowany. Ponadto wartości w kolumnach memory_object_address i pool_id są filtrowane; wartość kolumny jest ustawiona na NULLwartość .
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 przypadku pamięci podręcznych planów SQL i planów obiektów rozmiar tabeli skrótu może wynosić do 10 007 w systemach 32-bitowych i maksymalnie 40 009 w systemach 64-bitowych. W przypadku pamięci podręcznej Drzew powiązanych rozmiar tabeli skrótów może wynosić do 1009 w systemach 32-bitowych i maksymalnie 4001 w 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. |
refcounts |
int | Liczba obiektów cache odwołujących się do tego obiektu cache.
refcounts musi być co najmniej 1, aby wpis był w pamięci podręcznej. |
usecounts |
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 Rozszerzony 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 dynamicznymi funkcjami zarządzania: 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 | Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW) |
Permissions
Program SQL Server 2019 (15.x) i starsze wersje wymagają VIEW SERVER STATE uprawnień.
Program SQL Server 2022 (16.x) i nowsze wersje oraz usługa Azure SQL Managed Instance wymagają VIEW SERVER PERFORMANCE STATE uprawnień.
W przypadku celów usługi Azure 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.
Przykłady
A. Zwraca tekst wsadowy 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;
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';
C. Zwraca opcje ZESTAWU, za pomocą których został skompilowany plan
Poniższy przykład zwraca SET opcje, z którymi został skompilowany plan. Plan sql_handle jest również zwrócony. Operator PIVOT służy do wyprowadzania set_options atrybutów i sql_handle jako kolumn, a nie jako wierszy. Aby uzyskać więcej informacji na temat wartości zwróconej w pliku set_options, zobacz sys.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. Zwraca podział 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
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';
Treści powiązane
- dynamiczne widoki zarządzania systemu
- 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)
- Klauzula FROM oraz JOIN, APPLY, PIVOT (Transact-SQL)