Condividi tramite


sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure

Restituisce lo stato corrente dei semafori delle risorse utilizzati per limitare l'ottimizzazione simultanea delle query.

Column Type Descrizione
pool_id int ID pool di risorse in Resource Governor
name sysname Compilare il nome del gate (Gateway piccolo, Gateway medio, Big Gateway)
max_count int Numero massimo configurato di compilazioni simultanee
active_count int Numero attualmente attivo di compilazioni in questo gate
waiter_count int Numero di camerieri in questo cancello
threshold_factor bigint Fattore soglia che definisce la parte massima di memoria usata dall'ottimizzazione query. Per il gateway di piccole dimensioni, threshold_factor indica l'utilizzo massimo della memoria dell'utilità di ottimizzazione in byte per una query prima che sia necessario ottenere un accesso nel gateway di piccole dimensioni. Per il gateway medio e grande, threshold_factor mostra la parte della memoria totale del server disponibile per questo gate. Viene usato come divisore per calcolare la soglia di utilizzo della memoria per il gate.
threshold bigint Memoria soglia successiva in byte. La query è necessaria per ottenere l'accesso a questo gateway se l'utilizzo della memoria raggiunge questa soglia. "-1" se la query non è necessaria per ottenere l'accesso a questo gateway.
is_active bit Indica se la query deve passare o meno il gate corrente.

Autorizzazioni

SQL Server richiede l'autorizzazione VIEW SERVER STATE per il server.

database SQL di Azure richiede l'autorizzazione VIEW DATABASE STATE nel database.

Autorizzazioni per SQL Server 2022 e versioni successive

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

Osservazioni:

SQL Server usa un approccio gateway a livelli per limitare il numero di compilazioni simultanee consentite. Vengono usati tre gateway, tra cui piccole, medie e grandi. I gateway consentono di evitare l'esaurimento delle risorse di memoria complessive da parte di consumer che richiedono memoria di compilazione più grandi.

Le attese su un gateway comportano una compilazione ritardata. Oltre ai ritardi nella compilazione, le richieste limitate avranno un accumulo di RESOURCE_SEMAPHORE_QUERY_COMPILE tipo di attesa associato. Il tipo di attesa RESOURCE_SEMAPHORE_QUERY_COMPILE può indicare che le query usano una grande quantità di memoria per la compilazione e che la memoria è stata esaurita oppure in alternativa è disponibile memoria sufficiente nel complesso, ma le unità disponibili in un gateway specifico sono state esaurite. L'output di sys.dm_exec_query_optimizer_memory_gateways può essere usato per risolvere gli scenari in cui memoria insufficiente per compilare un piano di esecuzione delle query.

Esempi

R. Visualizzazione delle statistiche sui semafori delle risorse

Quali sono le statistiche correnti del gateway di memoria di Optimizer per questa istanza di SQL Server?

SELECT [pool_id], [name], [max_count], [active_count],
       [waiter_count], [threshold_factor], [threshold],
       [is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;   

Vedi anche

Funzioni a gestione dinamica e DMV (Transact-SQL)
Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)
Come usare il comando DBCC MEMORYSTATUS per monitorare l'utilizzo della memoria nelle attese di compilazione di query di grandi dimensioni di SQL Server 2005in RESOURCE_SEMAPHORE_QUERY_COMPILE in SQL Server 2014