Partilhar via


sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Retorna o status atual dos semáforos de recursos usados para reduzir a otimização de consultas simultâneas.

Coluna Tipo Descrição
pool_id int ID do pool de recursos em Administrador de Recursos
name sysname Nome da porta de compilação (Small Gateway, Medium Gateway, Big Gateway)
max_count int A contagem máxima configurada de compilações simultâneas
active_count int A contagem atualmente ativa de compilações nesta porta
waiter_count int O número de garçons neste portão
threshold_factor bigint Fator limite que define a parte máxima de memória usada pela otimização de consulta. Para o gateway pequeno, threshold_fator indica o uso máximo de memória do otimizador em bytes para uma consulta antes que seja necessário obter acesso no gateway pequeno. Para o gateway médio e grande, threshold_fator mostra a parte da memória total do servidor disponível para esse portão. Ele é usado como um divisor ao calcular o limite de uso de memória para o portão.
threshold bigint Próximo limite de memória em bytes. A consulta é necessária para obter acesso a esse gateway se seu consumo de memória atingir esse limite. -1 se a consulta não for necessária para obter acesso a esse gateway.
is_active pouco Se a consulta é necessária para passar o portão atual ou não.

Permissões

O SQL Server requer a permissão VIEW SERVER STATE no servidor.

O Banco de Dados SQL do Azure requer a permissão VIEW DATABASE STATE no banco de dados.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Comentários

O SQL Server usa uma abordagem de gateway hierárquico para reduzir o número de compilações simultâneas permitidas. Três gateways são usados, incluindo pequeno, médio e grande. Os gateways ajudam a evitar o esgotamento dos recursos gerais de memória por consumidores maiores que exigem memória de compilação.

As esperas em um gateway resultam em atraso na compilação. Além dos atrasos na compilação, as solicitações reduzidas terão um acúmulo associado do tipo RESOURCE_SEMAPHORE_QUERY_COMPILE espera. O tipo de espera RESOURCE_SEMAPHORE_QUERY_COMPILE pode indicar que as consultas estão usando uma grande quantidade de memória para compilação e que a memória está esgotada. Como alternativa, pode haver memória suficiente disponível em geral, mas as unidades disponíveis em um gateway específico estão esgotadas. A saída de sys.dm_exec_query_optimizer_memory_gateways pode ser usada para solucionar problemas em cenários em que não havia memória suficiente para compilar um plano de execução de consulta.

Exemplos

Um. Ver estatísticas sobre semáforos de recursos

Quais são as estatísticas atuais do gateway de memória do otimizador para esta instância do 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;