Udostępnij za pośrednictwem


sys.dm_exec_query_memory_grants (Transact-SQL)

Zwraca informacje o kwerendach, które nabyli przyznania pamięci lub który nadal wymaga udzielenia pamięci do wykonać.Kwerendy, na których nie trzeba czekać na udzielenie pamięci nie pojawi się w tym widoku.

Nazwa kolumna

Typ danych

Description

session_id

smallint

ID (SPID) sesja, w którym ta kwerenda jest uruchomiona.

request_id

int

Identyfikator żądania.Unikatowa w ramach sesja.

scheduler_id

int

Identyfikator harmonogramu, który jest planowanie tej kwerendy.

Dop

smallint

Stopień proste tej kwerendy.

request_time

datetime

Data i czas po tej kwerendy żądanie przyznania pamięci.

grant_time

datetime

Data i godzina, kiedy została udzielona pamięci dla tej kwerendy.NULL, jeśli pamięci nie jest jeszcze udzielony.

requested_memory_kb

bigint

Łączna kwota żądanej pamięci w kilobajtach.

granted_memory_kb

bigint

Całkowita ilość pamięci faktycznie udzielone w kilobajtach.Może mieć wartość NULL, jeśli do pamięci nie jest jeszcze udzielony.Do typowych sytuacji wartość ta powinna być taka sama, jak requested_memory_kb.Do utworzenia indeksu na serwer mogą zezwolić na dodatkową pamięć na żądanie poza początkowo udzielone pamięci.

required_memory_kb

bigint

Minimum memory required to run this query in kilobytes.requested_memory_kb is the same or larger than this amount.

used_memory_kb

bigint

Pamięci fizycznej używanej w tej chwili w kilobajtach.

max_used_memory_kb

bigint

Maksymalną pojemność pamięci fizycznej użytego do tej chwili w kilobajtach.

query_cost

float

Szacowany koszt kwerendy.

timeout_sec

int

Limit czas w sekundach, zanim ta kwerenda zwraca żądanie przyznania pamięci.

resource_semaphore_id

smallint

Nieunikatowy identyfikator semafora zasób oczekuje tej kwerendy.

NoteNote:
Ta nazwa jest unikatowa w wersjach SQL Server które są starsze niż SQL Server 2008. Ta zmiana może wpłynąć na wykonanie kwerendy dotyczące rozwiązywania problemów.Aby uzyskać więcej informacji zobacz sekcję "Uwagi" w dalszej części tego tematu.

queue_id

smallint

IDENTYFIKATOR kolejki oczekujących, gdzie czeka dotacji pamięci tej kwerendy.Wartość NULL, jeśli już udzielono pamięci.

wait_order

int

Kwerendy oczekujących w określonej kolejności queue_id.Jeżeli inne kwerendy uzyskać dotacji pamięci lub limit czas dla danej kwerendy można zmienić tej wartości.Wartość NULL, jeśli już udzielono pamięci.

is_next_candidate

bit

Do pełnienia funkcji następnego przyznania pamięci.

1 = Tak

0 = Nie

Wartość NULL = już udzielono pamięci.

wait_time_ms

bigint

Odczekaj czas (w milisekundach).Wartość NULL, jeśli już udzielono pamięci.

plan_handle

varbinary(64)

Identyfikator tego planu kwerend.Użycie sys.dm_exec_query_plan wyodrębnić planu rzeczywistego XML.

sql_handle

varbinary(64)

Identyfikator Transact-SQL tekst dla tej kwerendy. Użycie sys.dm_exec_sql_text w celu uzyskania rzeczywistej Transact-SQL tekst.

group_id

int

Identyfikator grupy obciążenia, którym ta kwerenda jest uruchomiona.

pool_id

int

Identyfikator puli zasób, należącym do tej grupa obciążenia.

is_small

tinyint

Gdy zestaw na 1, wskazuje, że przyznanie tego używa semafora małych zasób.Gdy zestaw na 0, wskazuje, że zwykłe semafora jest używany.

ideal_memory_kb

bigint

Rozmiar w kilobajtach (KB), przyznanie pamięci mieści się wszystkie elementy w pamięci fizycznej.To jest oparte na szacowanie liczebność.

Uprawnienia

Wymaga uprawnienia VIEW SERVER STATE na serwerze.

Remarks

Typowy scenariusz debugowania dla limitu czas kwerendy mogą wyglądać następująco:

  • Sprawdź, używając stanu pamięci system ogólny sys.dm_os_memory_clerks, sys.dm_os_sys_infoi różnych liczników wydajności.

  • Sprawdź, czy rezerwacje pamięci wykonanie kwerendy w sys.dm_os_memory_clerks where type = 'MEMORYCLERK_SQLQERESERVATIONS'.

  • Sprawdź, czy trwa oczekiwanie na dotacji za pomocą kwerendy sys.dm_exec_query_memory_grants.

  • Dodatkowo zbadać za pomocą kwerendy dużej ilości pamięci sys.dm_exec_requests.

  • Jeżeli podejrzewa się niekontrolowana kwerenda, należy sprawdzić plan wykonania z sys.dm_exec_query_plan i partia tekstu z sys.dm_exec_sql_text.

Kwerendy używające widoki dynamicznego zarządzania, które zawierają ORDER BY lub agregatów może zwiększyć zużycie pamięci i w ten sposób przyczynia się do problemu ich rozwiązywania problemów.

Funkcja zasób Governor umożliwia administrator bazy danych do puli zasób, maksymalnie 20 pul zasób serwera.W SQL Server 2008, każda pula zachowuje się jak wystąpienie małych niezależnych serwerów i wymaga 2 semaforów. Liczba wierszy, które są zwracane z sys.dm_exec_query_resource_semaphores może mieć maksymalnie 20 razy więcej niż wiersze, które są zwracane w SQL Server 2005.