Share via


sys.dm_exec_query_memory_grants

Data creazione: 14 aprile 2006

Restituisce informazioni sulle query a cui è stata concessa memoria o che sono ancora in attesa di riceverla. Le query che non sono in attesa di una concessione di memoria non saranno incluse in tale vista.

Nome colonna Tipo di dati Descrizione

session_id

smallint

ID (SPID) della sessione nella quale viene eseguita la query.

request_id

int

ID della richiesta. Valore univoco nel contesto della sessione.

scheduler_id

int

ID dell'utilità di pianificazione che sta pianificando la query.

dop

smallint

Grado di parallelismo della query.

request_time

datetime

Data e ora in cui la query ha richiesto la concessione di memoria.

grant_time

datetime

Data e ora in cui la memoria è stata concessa alla query. È NULL se la memoria non è stata ancora concessa.

requested_memory_kb

bigint

Quantità totale di memoria richiesta, espressa in kilobyte.

granted_memory_kb

bigint

Quantità totale di memoria effettivamente concessa, espressa in kilobyte. Può essere NULL se la memoria non è stata ancora concessa. In una situazione tipica questo valore dovrebbe corrispondere al valore di requested_memory_kb. In caso di creazione di indici, il server può concedere ulteriore memoria su richiesta in aggiunta alla memoria concessa inizialmente.

required_memory_kb

bigint

Quantità minima di memoria necessaria per l'esecuzione della query, espressa in kilobyte. Il valore di requested_memory_kb è maggiore o uguale a questa quantità.

used_memory_kb

bigint

Memoria fisica attualmente in uso, espressa in kilobyte.

max_used_memory_kb

bigint

Memoria fisica massima utilizzata fino a questo momento, espressa in kilobyte.

query_cost

float

Costo stimato della query.

timeout_sec

int

Timeout in secondi prima che la query rinunci alla richiesta di concessione di memoria.

resource_semaphore_id

smallint

ID del semaforo di risorsa sul quale la query è in attesa.

queue_id

smallint

ID della coda nella quale la query sta attendendo la concessione di memoria. È NULL se la memoria è già stata concessa.

wait_order

int

Ordine sequenziale delle query in attesa all'interno del queue_id specificato. Questo valore può variare in caso di timeout o di concessione di memoria ad altre query. È NULL se la memoria è già stata concessa.

is_next_candidate

bit

Candidato alla concessione di memoria successiva.

1 = Sì

0 = No

NULL = Memoria già concessa

wait_time_ms

bigint

Periodo di attesa espresso in millisecondi. È NULL se la memoria è già stata concessa.

plan_handle

varbinary(64)

Identificatore del piano di query. Utilizzare sys.dm_exec_query_plan per estrarre il piano XML effettivo.

sql_handle

varbinary(64)

Identificatore del testo Transact-SQL della query. Utilizzare sys.dm_exec_sql_text per ottenere il testo Transact-SQL effettivo.

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE per il server.

Osservazioni

Di seguito è illustrato un tipico scenario di debug per il timeout delle query:

  • Verificare lo stato complessivo della memoria di sistema utilizzando sys.dm_os_memory_clerks, sys.dm_os_sys_info e diversi contatori di prestazioni.
  • Verificare le prenotazioni di memoria per l'esecuzione di query in sys.dm_os_memory_clerks dove type = 'MEMORYCLERK_SQLQERESERVATIONS'.
  • Verificare le query in attesa di concessione di memoria utilizzando sys.dm_exec_query_memory_grants.
  • Esaminare in maggiore dettaglio le query che utilizzano una quantità elevata di memoria utilizzando sys.dm_exec_requests.
  • Se si sospetta la presenza di una query runaway, esaminare lo Showplan di sys.dm_exec_query_plan e il testo del batch di sys.dm_exec_sql_text.

Le query che utilizzano viste a gestione dinamica che includono clausole ORDER BY o funzioni di aggregazione potrebbero aumentare l'utilizzo della memoria, contribuendo di conseguenza a causare il problema che dovrebbero risolvere. La vista sys.dm_exec_query_memory_grants è nuova in SQL Server 2005 con Service Pack 1. Le informazioni incluse in questa vista sono specifiche dell'implementazione interna di SQL Server 2005 e verranno probabilmente modificate nella prossima versione di SQL Server. Utilizzare pertanto tale vista ****per la risoluzione dei problemi ma non includerla nelle applicazioni che utilizzeranno versioni future di SQL Server.

Vedere anche

Riferimento

sys.dm_exec_query_resource_semaphores
Funzioni e viste a gestione dinamica relative all'esecuzione

Guida in linea e informazioni

Assistenza su SQL Server 2005