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.
Note:
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.