Dicas

Como diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE

Saiba agora mesmo como você pode diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE no SQL Server.

Recentemente eu trabalhei em um projeto de tunning e performance SQL Server, o ambiente estava bem lento mesmo. Ao analisar os principais waits que estavam ocorrendo no banco de dados SQL Server do cliente, pude identificar que um dos principais waits eram RESOURCE_SEMAPHORE_QUERY_COMPILE.

A princípio achei interessante, pois já tinha trabalhado com RESOURCE_SEMAPHORE. Então vou deixar aqui para vocês algumas dicas de como eu fiz para diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE

Entendendo o RESOURCE_SEMAPHORE_QUERY_COMPILE

Para entender melhor do que se trata o RESOURCE_SEMAPHORE_QUERY_COMPILE ocorre quando uma consulta está esperando por liberação da memória que vai permitir que a compilação ocorra.

A memória de compilação é retirada do buffer pool e mantida pelo tempo necessário para concluir o processo de compilação. O que em muitos casos acontecem é que o uso de muitas páginas em memória para várias compilações simultâneas cause uma pressão na memória. Para mitigar isso o SQL calcula quais consultas exigirão um grande número de páginas e para isso força algumas esperas.

Se já estiver com pressão de memória o SQL Server limitará o número de consultas intensivas de recursos que podem ser compiladas simultaneamente. Em resumo, significa que você pode ter muitas consultas que exigem muita memória. Ou outro recurso está pegando as páginas de memória do buffer pool.

Como posso investigar RESOURCE_SEMAPHORE_QUERY_COMPILE?

No meu caso eu abri o perfmon e verifiquei os seguintes contadores:

  • Compilations/sec
  • Compilations/batch
  • Recompilations/sec
  • Batch requests/sec

Em breve farei artigos sobre esses contadores com mais detalhes para vocês, se você ver que esse post já é antigo, pode procurar no campo de busca o nome desses contadores que certamente aparecerá esses detalhes que disse agora mesmo.

Recomendo também investigar as consultas que demoram mais tempo no SQL Server, para encontrar isso você pode investigar nas DMV’s sys.dm_exec_query_memory_grants, sys.dm_exec_query_resource_semaphores.

Caso você não tenha conseguido, entre em contato comigo para eu te mostrar como podemos resolver isso.

Consultoria SQL Server Remoto

Um grande abraço!

Como diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE
Wesley Mota

Share
Published by
Wesley Mota

Recent Posts

Dicas de como a função UPPER() no SQL Server pode degradar a performance

Saiba como a função UPPER() no SQL Server pode degradar a performance das suas consultas…

6 anos ago

Funções de Data no SQL Server: Conheça a DATEADD ()

Nós DBA' e desenvolvedores quase sempre temos que trabalhar com datas quando se trata de…

8 anos ago

3 Maneiras Para Proteger a Conta SA no SQL Server

Quais são as diferentes maneiras de proteger o login Senha do Administrador (SA)? Todos estão…

8 anos ago

Alterar a Senha de SA do SQL Server: Como Fazer?

Com os direitos que o login sa tem por padrão no SQL Server, é obrigatório…

8 anos ago

Segurança Para DBAs e Administradores no SQL SERVER

Como um DBA, você tem a responsabilidade de garantir a segurança do aplicativo e dos…

8 anos ago

CAST E CONVERT: Conversões Decimais De Alteração do SQL Server

Ao realizar cálculos simples dentro do SQL Server usando decimais, você pode observar o que…

8 anos ago