Udostępnij za pośrednictwem


sys.dm_exec_query_memory_grants (języka Transact-SQL)

Zwraca informacje o kwerendach, które nabyły dotacji pamięci lub który nadal wymaga przyznania pamięci do wykonać.Kwerendy, które nie trzeba czekać na przyznanie pamięci nie będą wyświetlane w tym widoku.

Nazwa kolumny

Typ danych

Opis

session_id

smallint

Identyfikator (SPID) sesja , na którym jest uruchomiona ta kwerenda.

request_id

int

Identyfikator żądania.Unikatowa w kontekście sesja.

scheduler_id

int

Identyfikator harmonogramu, która planowania tej kwerendy.

Dop

smallint

Stopień równoległości prostych tej kwerendy.

request_time

datetime

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

grant_time

datetime

Data i czas udzieleniem pamięci dla tej kwerendy.Wartość NULL, jeśli nie przyznano jeszcze pamięci.

requested_memory_kb

bigint

Całkowita żądana ilość pamięci w kilobajtach.

granted_memory_kb

bigint

Całkowita ilość pamięci faktycznie przyznanej w kilobajtach.Może mieć wartość NULL, jeśli nie przyznano jeszcze pamięci.Do typowych sytuacji, wartość ta powinna być taka sama, jak requested_memory_kb.Do utworzenia indeksu serwera mogą zezwolić na dodatkowej pamięci na żądanie poza pamięci pierwotnie udzielone.

required_memory_kb

bigint

Pamięć minimalna wymagana do uruchomienia tej kwerendy w kilobajtach.requested_memory_kb jest taka sama lub większa od tej kwoty.

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 czasu w sekundach, zanim ta kwerenda umożliwia żądanie przyznania pamięci.

resource_semaphore_id

smallint

Nieunikatowy identyfikator semafora zasób oczekuje tej kwerendy.

UwagaUwaga:
Ten identyfikator jest unikatowy 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 temat "Uwagi" sekcja w dalszej części tego tematu.

queue_id

smallint

Identyfikator kolejki oczekujących, gdzie ta kwerenda czeka na dotacje pamięci.Wartość NULL, jeśli już udzielono pamięci.

wait_order

int

Kwerend oczekiwania w określonej kolejności queue_id.Wartość tę można zmienić dla danej kwerendy innych kwerend uzyskania dotacji pamięci lub limit czas .Wartość NULL, jeśli już udzielono pamięci.

is_next_candidate

bit

Kandydat dalej dotacji pamięci.

1 = Tak

0 = Nie

NULL = już udzielono pamięci.

wait_time_ms

bigint

czas w milisekundach oczekiwania.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ć rzeczywiste XML plan.

sql_handle

varbinary(64)

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

group_id

int

Identyfikator grupa obciążenia , gdzie jest uruchomiona ta kwerenda.

pool_id

int

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

is_small

tinyint

Podczas zestaw na 1, wskazuje, że dotacja ta używa semafora małych zasób .Gdy zestaw na 0, wskazuje, że używane jest regularne semafora.

ideal_memory_kb

bigint

Rozmiar w kilobajtach (KB), pamięć udzielić dopasowanie wszystko w pamięci fizycznej.To jest oparty na szacunku kardynalność .

Uprawnienia

Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.

Uwagi

Typowy scenariusz debugowania kwerendy czas-out może wyglądać następująco:

  • Sprawdzić ogólny używając stanu pamięci systemu sys.dm_os_memory_clerks, sys.dm_os_sys_infooraz różne liczników wydajności.

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

  • Wyboru kwerendy oczekujących na dotacje za pomocą sys.dm_exec_query_memory_grants.

  • Dalszego zbadania zapytań dużej ilości pamięci przy użyciu sys.dm_exec_requests.

  • Jeśli podejrzewa się niekontrolowane zapytanie , należy zbadać Showplan z sys.dm_exec_query_plan i tekst partia 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 przyczynić się do problemu, który występuje problem.

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