sys.dm_exec_query_resource_semaphores (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)
Restituisce le informazioni sullo stato del semaforo query-resource corrente in SQL Server. sys.dm_exec_query_resource_semaphores fornisce lo stato generale della memoria di esecuzione delle query e consente di determinare se il sistema può accedere a memoria sufficiente. Questa vista integra le informazioni sulla memoria ottenute da sys.dm_os_memory_clerks per fornire un quadro completo dello stato della memoria del server. sys.dm_exec_query_resource_semaphores restituisce una riga per il semaforo normale della risorsa e un'altra per il semaforo della risorsa di query di piccole dimensioni. Esistono due requisiti per un semaforo di query di piccole dimensioni:
La concessione di memoria richiesta deve essere inferiore a 5 MB
Il costo della query deve essere inferiore a 3 unità di costo
Nota
Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_exec_query_resource_semaphores
. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
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. |
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. Se il sistema è sotto pressione sulla memoria o se viene concessa spesso memoria minima forzata, questo valore può essere maggiore dei valori target_memory_kb o 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. |
pdw_node_id | int | Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) Identificatore del nodo in cui è attiva la distribuzione. |
Autorizzazioni
In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader##
server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE
per il database o l'adesione ruolo del server ##MS_ServerStateReader##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE 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.
Usare sys.dm_exec_query_resource_semaphores per la risoluzione dei problemi, ma non includerlo nelle applicazioni che useranno versioni future di SQL Server.
La funzionalità Resource Governor consente a un amministratore di database di distribuire risorse del server fra un massimo di 64 pool di risorse. In SQL Server 2012 (11.x) e versioni successive, ogni pool si comporta come un'istanza di server indipendente di piccole dimensioni e richiede 2 semafori.
Vedi anche
Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)