Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar

sys.dm_exec_query_memory_grants

Atualizado: abril de 2011

Este tópico está DESATUALIZADO. Você pode encontrar a versão mais atual em Referência de Transact-SQL do SQL 14.

ImportantImportante
Este tópico não está atualizado. Para obter a versão atual, consulte sys.dm_exec_query_memory_grants.

Retorna informações sobre as consultas que adquiriram uma concessão de memória ou que ainda precisam dessa concessão para serem executadas. As consultas que não requerem uma concessão de memória não aparecerão nessa exibição.

No Banco de dados SQL do Microsoft Azure, as exibições de gerenciamento dinâmico não podem expor informações que causariam impacto na independência do banco de dados ou ou expor informações sobre outros bancos de dados aos quais o usuário tem acesso. Para evitar a exposição dessas informações, cada linha que contém dados que não pertencem ao locatário conectado é excluída do filtro. Além disso, os valores das colunas a seguir são filtrados; o valor da coluna é definido para NULL.

  • scheduler_id

  • wait_order

  • pool_id

  • group_id

 

Nome da coluna Tipo de dados Descrição

session_id

smallint

ID (SPID) da sessão em que esta consulta está em execução.

request_id

int

ID da solicitação. Exclusiva no contexto da sessão.

scheduler_id

int

ID do agendador que está programando esta consulta.

Esse valor de coluna está filtrado. O valor está definido para NULL.

dop

smallint

Grau de paralelismo desta consulta.

request_time

datetime

Data e hora quando esta consulta solicitou a concessão de memória.

grant_time

datetime

Data e hora quando a memória foi concedida a esta consulta. NULL se memória ainda não tiver sido concedida.

requested_memory_kb

bigint

Quantidade total solicitada de memória em quilobytes.

granted_memory_kb

bigint

Total de memória realmente concedido em quilobytes. Poderá ser NULL se a memória ainda não tiver sido concedida. Em uma situação típica, este valor deveria ser igual a requested_memory_kb. Na criação de índices, o servidor pode permitir memória sob demanda adicional além da memória inicialmente concedida.

required_memory_kb

bigint

Memória mínima exigida para executar esta consulta em quilobytes. requested_memory_kb é maior ou igual a essa quantidade.

used_memory_kb

bigint

Memória física usada neste momento em quilobytes.

max_used_memory_kb

bigint

Máximo de memória física usada até este momento em quilobytes.

query_cost

float

Custo de consulta estimado.

timeout_sec

int

Tempo limite em segundos antes de esta consulta desistir da solicitação de concessão de memória.

resource_semaphore_id

smallint

ID não exclusivo do semáforo do recurso no qual esta consulta está aguardando.

noteObservação
Este ID é exclusivo em versões do SQL Server anteriores ao SQL Server 2008. Essa alteração pode afetar a execução de consulta de solução de problemas. Para obter mais informações, consulte "Comentários", posteriormente neste tópico.

queue_id

smallint

ID da fila de espera em que esta consulta aguarda concessões de memória. NULL se a memória já tiver sido concedida.

wait_order

int

Ordem sequencial de consultas de espera dentro da queue_id especificada. Esse valor poderá ser alterado para uma determinada consulta se outras consultas obtiverem concessões de memória ou tempo limite. NULL se a memória já tiver sido concedida.

Esse valor de coluna está filtrado. O valor está definido para NULL.

is_next_candidate

bit

Candidato para a próxima concessão de memória.

1 = Sim

0 = Não

NULL = Se a memória já tiver sido concedida.

wait_time_ms

bigint

Tempo de espera em milissegundos. NULL se a memória já tiver sido concedida.

plan_handle

varbinary(64)

Identificador para este plano de consulta. Use sys.dm_exec_query_plan para extrair o plano XML real.

sql_handle

varbinary(64)

Identificador de texto Transact-SQL desta consulta. Use sys.dm_exec_sql_text para obter o texto Transact-SQL real.

group_id

int

ID do grupo de carga de trabalho em que esta consulta está sendo executada.

Esse valor de coluna está filtrado. O valor está definido para NULL.

pool_id

int

ID do pool de recursos a que este grupo de carga de trabalho pertence.

Esse valor de coluna está filtrado. O valor está definido para NULL.

is_small

tinyint

Quando definido como 1, indica que esta concessão usa o sinal do recurso pequeno. Quando definido como 0, indica que um sinal normal é usado.

ideal_memory_kb

bigint

Tamanho, em quilobytes (KB), da concessão de memória para ajustar tudo na memória física. Isso se baseia na estimativa de cardinalidade.

Requer a permissão VIEW DATABASE STATE no servidor. Não pode ser consultado do banco de dados mestre. Para obter mais informações, consulte Dynamic Management Objects.

Um cenário de depuração típico para tempo limite de consulta pode se parecer com este:

  • Verifique o status geral da memória do sistema usando sys.dm_os_memory_clerks, sys.dm_os_sys_info e vários contadores de desempenho.

  • Verifique se há reservas de memória de execução da consulta em sys.dm_os_memory_clerks, em que type = 'MEMORYCLERK_SQLQERESERVATIONS'.

  • Verifique se há consultas aguardando concessões que usam sys.dm_exec_query_memory_grants.

  • Além disso, examine as consultas que usam bastante memória utilizando sys.dm_exec_requests.

  • Se houver suspeita de uma consulta sem controle, examine o Plano de execução de sys.dm_exec_query_plan e o texto em lote de sys.dm_exec_sql_text.

As consultas que usam exibições de gerenciamento dinâmico com ORDER BY ou agregações podem aumentar o uso da memória e, dessa forma, contribuir para a solução do problema.

O recurso Administrador de Recursos permite que um administrador de banco de dados distribua recursos de servidor entre pools de recursos, até um máximo de 64 pools. A partir do SQL Server 2008, cada pool se comporta como uma instância de servidor independente pequena e exige dois semáforos. O número de linhas retornadas de sys.dm_exec_query_resource_semaphores pode ser até 20 vezes maior que o retornado no SQL Server 2005.

Mostrar:
© 2014 Microsoft