SPRZEDAŻ: 1-800-867-1389

sys.dm_exec_plan_attributes (języka Transact-SQL)

Zwraca jeden wiersz na planu atrybut dla planu określone przez dojście do planu. Ta funkcja wartościami przechowywanymi w tabeli można użyć, aby uzyskać szczegółowe informacje dotyczące planu szczególne, takie jak wartości kluczy pamięci podręcznej lub numer bieżącego egzekucji jednoczesne planu.

Uwaga Uwaga:

Niektóre informacje zwracane przez tę funkcję mapy do sys.syscacheobjects widok zgodność ze starszymi wersjami.


sys.dm_exec_plan_attributes ( plan_handle )

plan_handle

Jednoznacznie identyfikuje plan kwerend dla partii, która wykonała i których planu znajduje się w pamięci podręcznej planu. plan_handleis varbinary(64). Uchwyt planu, można otrzymać od sys.dm_exec_cached_plans widoku dynamicznego zarządzania.

Nazwa kolumny

Typ danych

Opis

atrybut

varchar(128)

Nazwa atrybutu skojarzonego z tym planem. Jedną z następujących czynności:

Atrybut Typ danych Opis
set_options int Wskazuje wartości opcji, które plan został skompilowany z.
podpolecenie objectid int Jednym z głównych kluczy używanych do wyszukiwania obiektu w pamięci podręcznej. Jest to obiekt ID przechowywany w sys.objects dla obiektów bazy danych (procedury, widoki, wyzwalacze itd.). Dla planów typu "Ad hoc" lub „Prepared", jest wewnętrzne mieszania tekstu partii.
dbid int Jest to identyfikator bazy danych zawierającej podmiot plan dotyczy. Ad hoc lub przygotowane plany jest identyfikator bazy danych, z której jest wykonywany partii.
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 niejawny rozpoznawanie i może być współużytkowane przez różnych użytkowników. Jest to preferowana metoda. Każda inna wartość reprezentuje identyfikator użytkownika przesyłania kwerend w bazie danych.
Identyfikator_języka smallint Identyfikator języka połączenia, utworzony obiekt pamięci podręcznej. Aby uzyskać więcej informacji, zobacz sys.syslanguages (języka Transact-SQL).
date_format smallint Format daty połączenia, utworzony obiekt pamięci podręcznej. Aby uzyskać więcej informacji, zobacz SET DATEFORMAT (język Transact-SQL).
date_first tinyint Pierwsza wartość daty. Aby uzyskać więcej informacji, zobacz SET DATEFIRST (języka Transact-SQL).
stan int Statusem bity, które są częścią klucza odnośnik pamięci podręcznej.
required_cursor_options int Opcje kursora, w określonej przez użytkownika, takie jak typ kursora.
acceptable_cursor_options int Kursor opcje, które SQL Servermogą niejawnie przekonwertować do w celu wsparcia realizacji deklaracji. Na przykład użytkownik może określić dynamiczne kursora, ale Optymalizator kwerend jest dozwolone do przekonwertowania tego typu kursora na kursorze statyczne. Aby uzyskać więcej informacji, zobacz Using Implicit Cursor Conversions.
inuse_exec_context int Liczba aktualnie wykonywanych partii, które są przy użyciu planu kwerend. Aby uzyskać więcej informacji na temat realizacji planów kontekstu i kwerendy, zobacz Execution Plan Caching and Reuse.
free_exec_context int Liczby kontekstów buforowanych wykonanie planu kwerend, które nie są obecnie używane.
hits_exec_context int Ile razy kontekst wykonania został otrzymany z pamięci podręcznej planu i ponownie zapisywanie narzutów ponownej kompilacji instrukcji SQL. Wartość jest agregatem dla wszystkich partii egzekucji tak daleko.
misses_exec_context int Ile razy, które kontekst wykonania nie można odnaleźć w pamięci podręcznej planu, wynikające w tworzeniu nowy kontekst realizacji wykonania partii.
removed_exec_context int Liczby kontekstów wykonania, które zostały usunięte z powodu presji pamięci na buforowanego planu.
inuse_cursors int Liczba aktualnie wykonywanych partii zawierających jeden lub więcej kursory, używających buforowanego planu.
free_cursors int Liczba bezczynności lub wolna kursorów dla buforowanego planu.
hits_cursors int Liczba godzin, które nieaktywny kursor został otrzymany z buforowanego planu i ponownie. Wartość jest agregatem dla wszystkich partii egzekucji tak daleko.
misses_cursors int Liczbę razy, których nie można odnaleźć nieaktywny kursora 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 partii.
merge_action_type smallint Typ wyzwalacza wykonanie planu używane w wyniku oświadczenie korespondencji seryjnej. wartość 0 wskazuje plan nie wyzwalacz, plan wyzwalacz, który nie wykonuje w wyniku oświadczenie korespondencji seryjnej lub plan wyzwalacz, który wykonuje w wyniku scalania oświadczenie, że tylko określa akcję usuwania. 1 oznacza plan wyzwalacz INSERT, który działa jako wynik oświadczenie korespondencji seryjnej. 2 oznacza plan wyzwalacza aktualizacji, który działa jako wynik oświadczenie korespondencji seryjnej. 3 oznacza plan wyzwalacz usunięcia, który działa jako wynik oświadczenie korespondencji seryjnej, zawierające odpowiednie działania INSERT lub UPDATE. Dla wyzwalaczy zagnieżdżonych uruchamiane przez działania kaskadowych wartość ta jest działanie instrukcja korespondencji seryjnej, która spowodowała Kaskadowo.

wartość

sql_variant

Wartość atrybutu, który jest skojarzony z tym planem.

is_cache_key

bit

Wskazuje, czy atrybut jest używany jako część klucza odnośnik pamięci podręcznej planu.

Wymaga WIDOKU serwera członkowskiego uprawnień na serwerze.

Ustawianie opcji

Kopie tego samego planu skompilowany mogą różnić się jedynie przez wartość set_options kolumny. Oznacza to, że różne połączenia są przy użyciu różnych zestawów Ustawianie opcji dla tej samej kwerendy. Za pomocą różnych zestawów opcji jest zwykle niepożądana, ponieważ mogą powodować dodatkowe kompilacje, mniej planu ponownego użycia i planu pamięci podręcznej inflacji z powodu wielu kopii planów w pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Query Tuning Recommendations.

Oceny Ustawianie opcji

Aby przetłumaczyć wartość zwracany w set_options do opcji, z których plan został skompilowany, odjąć wartości z set_options wartości, począwszy od największej wartości możliwe, dopóki nie osiągniesz 0. Każda wartość, którą należy odjąć odnosi się do opcji, które zostało użyte do planu kwerend. Na przykład jeśli wartość w set_options 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), równoległe Plan(2) i spowodowałyby (1).

Opcja

Wartość

ANSI_PADDING

1

Plan równoległe

2

FORCEPLAN

4

CONCAT_NULL_YIELDS_NULL

8

ANSI_WARNINGS

16

ANSI_NULLS

32

QUOTED_IDENTIFIER

64

ANSI_NULL_DFLT_ON

128

ANSI_NULL_DFLT_OFF

256

NoBrowseTable

Wskazuje, że plan nie używa tabeli Praca do wykonania operacji dla PRZEGLĄDAĆ.

512

TriggerOneRow

Wskazuje, że plan zawiera Optymalizacja pojedynczego wiersza po wyzwalacza Delty tabel.

1024

ResyncQuery

Wskazuje, że kwerenda została przedłożona przez wewnętrznego systemu przechowywane procedury.

2048

ARITH_ABORT

4096

NUMERIC_ROUNDABORT

8192

DATEFIRST

16384

DATEFORMAT

32768

LanguageID

65536

PO

Wskazuje, że opcja bazy danych PARAMETRYZACJA została ustawiona na WYMUSZONY, gdy plan został skompilowany.

131072

Kursory

Nieaktywny kursory są buforowane w skompilowany plan, tak aby pamięci używanej do przechowywania kursora mogą być ponownie używane przez użytkowników kursorów. Załóżmy na przykład, że partia oświadcza i używa kursor bez cofanie przydziału go. W przypadku dwóch użytkowników wykonywanie tej samej partii, będzie istnieć dwa aktywne kursory. Po kursory są cofniętych przydziałów (potencjalnie w różnych partii), pamięci używanej do przechowywania kursor jest buforowany i nie wydany. Ta lista nieaktywnych kursorów jest przechowywana w skompilowany plan. Następnym razem użytkownik wykonuje wsadowe, pamięci kursora buforowane będą ponownie i odpowiednio zainicjowany jako aktywny kursor.

Oceny opcje kursora

Aby przetłumaczyć wartość zwracany w required_cursor_options i acceptable_cursor_options do opcji, z których plan został skompilowany, odjąć wartości od wartości kolumny, rozpoczynając największą wartość możliwe, dopóki nie osiągniesz 0. Każda wartość, którą należy odjąć odnosi się do opcji kursora, które zostało użyte do planu kwerend.

Opcja

Wartość

Brak

0

INSENSITIVE

1

SCROLL

2

TYLKO DO ODCZYTU

4

DLA AKTUALIZACJI

8

LOCAL

16

GLOBAL

32

FORWARD_ONLY

64

KEYSET

128

DYNAMIC

256

SCROLL_LOCKS

512

OPTIMISTIC

1024

STATIC

2048

FAST_FORWARD

4096

W MIEJSCE

8192

DLAselect_statement

16384

A.Zwracania atrybutów szczegółowy plan

Poniższy przykład zwraca wszystkie atrybuty planu plan określony. sys.dm_exec_cached_plansWidok dynamicznego zarządzania jest kolejkowany najpierw uzyskać dojście planu do planu określonego. W drugą kwerendę, zastąpić <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
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.Przywrócenie Ustawianie opcji dla planów skompilowany i SQL obsługę pamięci podręcznej planów

Poniższy przykład zwraca wartość reprezentujących opcje, które każdy plan został skompilowany z. Ponadto uchwyt SQL dla wszystkich buforowanych planów jest zwracany.

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
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
Czy oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Dziękujemy za opinię.

Zawartość społeczności

Pokaż:
© 2014 Microsoft