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