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