sys.dm_exec_plan_attributes (języka Transact-SQL)
Zwraca jeden wiersz na plan atrybut dla planu, określonego przez dojście do planu.W tej tabelamożna użyć-wycenione funkcja , aby uzyskać szczegółowe informacje dotyczące konkretnego planu, takich jak pamięć podręczna wartości klucz lub numer bieżącej równoczesnego wykonania planu.
Ostrzeżenie
Niektóre informacje zwrócone za pomocą tej funkcja jest mapowany na sys.syscacheobjects widoku zgodności z poprzednimi wersjami.
Składnia
sys.dm_exec_plan_attributes ( plan_handle )
Argumenty
- plan_handle
Jednoznacznie identyfikuje plan kwerend dla partia , została wykonana i którego plan znajduje się w pamięci podręcznej planu.plan_handleis varbinary(64).Uchwyt plan może być otrzymana z sys.dm_exec_cached_plans dynamiczny widok zarządzania.
Zwracana tabela
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
atrybut |
varchar(128) |
Nazwa atrybut skojarzonego z tym planem.Jedną z następujących czynności:
AttributeTyp danychOpis
set_options int Wskazuje wartości opcji, które plan był przestrzegany.
Identyfikator obiektu int Jeden z głównych kluczy używanych do wyszukiwania obiektu w pamięci podręcznej.Jest to obiekt identyfikator przechowywany w sys.objects dla obiektów bazy danych (procedury, widoki, wyzwalaczami i tak dalej).Dla planów typu "Ad hoc" lub "Prepared" jest wewnętrzny mieszania tekstu partia .
Identyfikator DBID int Jest identyfikator bazę danych zawierającą obiekt plan dotyczy.Ad hoc lub przygotowane plany jest identyfikator bazy danych, z której jest wykonywany partia .
dbid_execute int Dla obiektów systemu przechowywane w zasobów bazy danych, identyfikator bazy danych, z której jest wykonywany buforowanego planu.We wszystkich innych przypadkach jest 0.
user_id int Wartość -2 wskazuje, że partia przedłożone nie zależą od rozpoznawania nazw niejawna i mogą być współużytkowane przez różnych użytkowników.Jest to preferowana metoda.Każda wartość reprezentuje identyfikator użytkownika przesyłania kwerend w bazie danych.
identyfikator_języka smallint Identyfikator języka połączenia, która utworzyła obiekt pamięci podręcznej.Aby uzyskać więcej informacji, zobacz sys.syslanguages (Transact-SQL).
date_format smallint Format daty połączenia, która utworzyła obiekt pamięci podręcznej.Aby uzyskać więcej informacji, zobacz Ustaw format daty (Transact-SQL).
date_first tinyint Pierwsza wartość daty.Aby uzyskać więcej informacji, zobacz SET DATEFIRST (Transact-SQL).
Stan int Bity stanu wewnętrznego należące do przeszukiwania pamięci podręcznej klucz.
required_cursor_options int Opcje kursora określone przez użytkownika, takie jak typ kursor .
acceptable_cursor_options int Kursor opcji SQL Server mogą niejawnie przekonwertować do do obsługi wykonanie instrukcja.Na przykład użytkownik może określić dynamiczne kursor, ale optymalizator kwerendy jest dozwolona Konwersja tego typu kursor na statyczne kursor.Aby uzyskać więcej informacji, zobacz Za pomocą konwersje niejawne kursora.
inuse_exec_context int Liczba aktualnie wykonywanych partii, które korzystają z planu kwerend.Aby uzyskać więcej informacji o wykonanie planów kwerend i kontekstu, zobacz Wykonanie planu buforowania i ponownego użycia.
free_exec_context int Liczba kontekstów buforowanych wykonanie planu kwerend, które nie są aktualnie używane.
hits_exec_context int Ile razy kontekst wykonania zostało uzyskane z pamięci podręcznej plan i ponownie zapisywanie narzutów ponownej kompilacjiinstrukcja SQL. Wartość wartość zagregowana dla wykonania partia wszystkie pory.
misses_exec_context int Ile razy kontekst wykonania nie można odnaleźć w pamięci podręcznej plan spowodowało utworzenie nowego kontekstu wykonanie do wykonania partia .
removed_exec_context int Liczba kontekstów wykonanie, które zostały usunięte z powodu presji pamięci na buforowanego planu.
inuse_cursors int Liczba aktualnie wykonywanych partie zawierające jeden lub więcej kursory, korzystających z buforowanego planu.
free_cursors int Liczba kursorów bezczynności lub bezpłatne dla buforowanego planu.
hits_cursors int Ile razy nieaktywny kursor został uzyskany z buforowanego planu i ponownie.Wartość wartość zagregowana dla wykonania partia wszystkie pory.
misses_cursors int Liczba przypadków, których nie można odnaleźć nieaktywny kursor w pamięci podręcznej.
removed_cursors int Liczbę kursorów, które zostały usunięte z powodu presji pamięci na buforowanego planu.
sql_handle varbinary (64)Uchwyt SQL dla partia.
merge_action_type smallint Typ wyzwalacza planu wykonania używanego w wyniku scalania instrukcja. wartość 0 wskazuje plan — do wyzwalacza, planu wyzwalacz, który jest wykonać w wyniku scalania instrukcjalub planu wyzwalacz, który jest wykonywany w wyniku scalania instrukcja , która określa jedynie usunięcie akcja.wartość 1 wskazuje planu wyzwalacz INSERT, który działa jako wynik scalania instrukcja.2 oznacza plan wyzwalacza aktualizacji, który działa jako wynik scalania instrukcja.3 oznacza Usuń plan wyzwalacza, działającą w wyniku scalania instrukcja zawierającą odpowiednich INSERT lub UPDATE akcja.Uruchom akcje kaskadowych zagnieżdżonych wyzwalaczy ta wartość jest akcja korespondencji seryjnej instrukcja , która spowodowała kaskadowo.
|
wartość |
sql_variant |
Wartość atrybut , który jest skojarzony z tym planem. |
is_cache_key |
bit |
Wskazuje, czy atrybut jest używany jako część pamięci podręcznej wyszukiwania klucz dla planu. |
Uprawnienia
Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.
Uwagi
Ustawianie opcji
Kopie tych samych skompilowany plan mogą różnić się jedynie przez wartość w set_options kolumna.Oznacza to, że różne połączenia z różnych zestawów Ustaw opcje dla tej samej kwerendy.Za pomocą różnych zestawów opcji jest zwykle niepożądana, ponieważ mogą powodować dodatkowe kompilacje mniej ponownego użycia planu i plan inflacji pamięci podręcznej z powodu wielu kopii planów w pamięci podręcznej.Aby uzyskać więcej informacji, zobacz Dostrajanie zalecenia kwerendy.
Ustawianie opcji oceny
Tłumaczenie wartości zwracane w set_options do opcji, z którymi został skompilowany plan, odejmować wartości z set_options wartości, zaczynając od największej możliwej wartości, dopóki nie osiągniesz 0.Każda wartość, odejmować odpowiadający opcji, które zostało użyte do planu kwerend.Na przykład jeśli wartość w set_options jest 251, dostępne są opcje plan został skompilowany z ANSI_NULL_DFLT_ON (128), QUOTED_IDENTIFIER (64), ANSI_NULLS(32), ANSI_WARNINGS (16), CONCAT_NULL_YIELDS_NULL (8), Plan(2) równoległych i spowodowałyby (1).
Opcja |
Wartość |
---|---|
SPOWODOWAŁYBY |
1 |
Plan równoległe |
2 |
FORCEPLAN |
4 |
CONCAT_NULL_YIELDS_NULL |
8 |
ANSI_WARNINGS |
16 |
KLAUZULE ANSI_NULLS |
32 |
QUOTED_IDENTIFIER |
64 |
ANSI_NULL_DFLT_ON |
128 |
ANSI_NULL_DFLT_OFF |
256 |
NoBrowseTable Wskazuje, że plan nie korzystać pracy tabela do wykonania operacji do PRZEGLĄDANIA. |
512 |
TriggerOneRow Wskazuje, czy plan zawiera optymalizację pojedynczy wiersz dla po tabel delta wyzwalacza. |
1024 |
ResyncQuery Wskazuje, że kwerenda została przedłożona przez procedury składowane w systemiewewnętrznych. |
2048 |
ARITH_ABORT |
4096 |
NUMERIC_ROUNDABORT |
8192 |
DATEFIRST |
16384 |
FORMAT DATY |
32768 |
LanguageID |
65536 |
PO Oznacza, że opcję bazy danych PARAMETRYZACJI była zestaw WYMUSZONY gdy plan został skompilowany. |
131072 |
Kursory
Kursory nieaktywnych są buforowane w skompilowany plan tak, aby pamięci używaną do przechowywania kursor mogą być wielokrotnie używane przez użytkowników równocześnie kursory.Załóżmy na przykład, że partia deklaruje i korzysta z kursor bez cofanie przydziału go.Jeśli dwóch użytkowników wykonywanie tej samej partia, będzie się dwa kursory aktywne.Po kursory są dealokowane (potencjalnie w różnych partii), pamięci używaną do przechowywania kursor jest buforowany i nie jest zwalniane.Ta lista nieaktywnych kursorów jest przechowywana w skompilowany plan.Następnym czas użytkownik wykonuje partia, pamięci podręcznej kursor zostanie ponownie użyty i odpowiednio zainicjowany jako aktywny kursor.
Ocena opcje kursora
Tłumaczenie wartości zwracane w required_cursor_options i acceptable_cursor_options do opcji, z którymi został skompilowany plan, odejmować wartości od wartości kolumna , poczynając od największej możliwej wartości, dopóki nie osiągniesz 0.Każda wartość, którą odejmować odpowiada opcja kursor , które zostało użyte do planu kwerend.
Opcja |
Wartość |
---|---|
Brak |
0 |
WIELKOŚĆ LITER |
1 |
PRZEWIJANIA |
2 |
TYLKO DO ODCZYTU |
4 |
DLA AKTUALIZACJI |
8 |
LOKALNE |
16 |
GLOBALNE |
32 |
FORWARD_ONLY |
64 |
ZESTAW KLUCZY |
128 |
DYNAMICZNE |
256 |
SCROLL_LOCKS |
512 |
PRZYPADEK OPTYMISTYCZNY |
1024 |
STATYCZNE |
2048 |
FAST_FORWARD |
4096 |
W MIEJSCU |
8192 |
DLAselect_statement |
16384 |
Przykłady
A.Zwracania atrybutów dla określonego planu
Poniższy przykład zwraca wszystkie atrybuty plan dla określonego planu.sys.dm_exec_cached_plansdynamiczny widok zarządzania jest poszukiwana najpierw do uzyskania dojścia plan dla określonego planu. Zastąp w drugą kwerendę <plan_handle> z planem obsługi wartości z pierwszej kwerendy.
SELECT plan_handle, refcounts, usecounts, size_in_bytes, cacheobjtype, objtype
FROM sys.dm_exec_cached_plans;
GO
SELECT attribute, value, is_cache_key
FROM sys.dm_exec_plan_attributes(<plan_handle>);
GO
B.Zwracanie Ustaw opcje dla planów skompilowany i uchwyt SQL dla planów buforowane
Poniższy przykład zwraca wartość przedstawiającą opcje, które każdy plan był przestrzegany.Ponadto zwracane jest dojście do SQL dla pamięci podręcznej planów.
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