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)