sys.dm_exec_query_resource_semaphores (Transact-SQL)

Restituisce informazioni sullo stato del semaforo per le risorse query corrente. sys.dm_exec_query_resource_semaphores specifica lo stato generale della memoria dell'esecuzione di query e consente di determinare se la quantità di memoria disponibile per il sistema è sufficiente. Insieme alle informazioni sulla memoria ottenute da sys.dm_os_memory_clerks, questa vista offre un quadro completo dello stato della memoria del server. sys.dm_exec_query_resource_semaphores restituisce una riga per il semaforo di risorsa normale e un'altra riga per il semaforo di risorsa per query di dimensioni ridotte.

Nome colonna

Tipo di dati

Descrizione

resource_semaphore_id

smallint

ID non univoco del semaforo di risorsa. È uguale a 0 per il semaforo di risorsa normale e a 1 per il semaforo di risorsa per query di dimensioni ridotte.

NotaNota
L'ID è univoco nelle versioni di SQL Server precedenti a SQL Server 2008. La modifica può influire sulla risoluzione dei problemi relativi all'esecuzione di query. Per ulteriori informazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.

target_memory_kb

bigint

Destinazione di utilizzo della concessione di memoria, espressa in kilobyte.

max_target_memory_kb

bigint

Destinazione potenziale massima, espressa in kilobyte. È NULL per il semaforo di risorsa per query di dimensioni ridotte.

total_memory_kb

bigint

Memoria utilizzata dal semaforo di risorsa, espressa in kilobyte. In caso di numero eccessivo di richieste di memoria o se viene concessa frequentemente una quantità minima di memoria, questo valore può essere maggiore del valore di target_memory_kb o di max_target_memory_kb. La memoria totale è la somma della memoria disponibile e della memoria concessa.

available_memory_kb

bigint

Memoria disponibile per una nuova concessione, espressa in kilobyte.

granted_memory_kb

bigint

Memoria totale concessa, espressa in kilobyte.

used_memory_kb

bigint

Parte fisica della memoria concessa, espressa in kilobyte.

grantee_count

int

Numero di query attive a cui è stata concessa la memoria richiesta.

waiter_count

int

Numero di query in attesa che venga concessa la memoria richiesta.

timeout_error_count

bigint

Numero complessivo di errori di timeout dall'avvio del server. È NULL per il semaforo di risorsa per query di dimensioni ridotte.

forced_grant_count

bigint

Numero complessivo di concessioni di memoria minima dall'avvio del server. È NULL per il semaforo di risorsa per query di dimensioni ridotte.

pool_id

int

ID del pool di risorse a cui appartiene il semaforo di risorsa.

Autorizzazioni

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

Osservazioni

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.

Utilizzare pertanto tale vista per la risoluzione dei problemi ma non includerla nelle applicazioni che utilizzeranno versioni future di SQL Server.

La funzionalità Resource Governor consente a un amministratore del database di distribuire risorse del server fra un massimo di 20 pool di risorse. In SQL Server 2008, ogni pool si comporta come una piccola istanza indipendente del server e richiede 2 semafori. Il numero di righe restituite da sys.dm_exec_query_resource_semaphores può essere fino a 20 volte superiore alle righe restituite in SQL Server 2005.