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 AzureIstanza gestita di SQL di Azure

Restituisce lo stato corrente dei semafori delle risorse usati per ridurre 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 l'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 ridurre 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 ridotte avranno un accumulo RESOURCE_SEMAPHORE_QUERY_COMPILE tipo di attesa associato. Il tipo di attesa RESOURCE_SEMAPHORE_QUERY_COMPILE potrebbe indicare che le query usano una grande quantità di memoria per la compilazione e che la memoria è esaurita. In alternativa, potrebbe essere disponibile memoria sufficiente nel complesso, ma le unità disponibili in un gateway specifico sono 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. Visualizzare le 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;