Conhecendo um pouco do Query Store

DBA e Consultor de Banco de Dados

Conhecendo um pouco do Query Store

Tempo de leitura: 5 minutos

Fala Pessoal,

Tudo beleza? ūüėä

No post de hoje falaremos sobre uma feature muito interessante que est√° presente desde a vers√£o 2016 do SQL Server o Query Store.

Mas o que é o Query Store?

Traduzindo para o Portugu√™s (Reposit√≥rio de Consultas). Em um breve resumo, esse “armaz√©m de consultas” por assim dizer simplifica a identifica√ß√£o de problemas de performance no SQL Server. Este recurso proporciona o gerenciamento e mapeamento das consultas que passaram por ‚Äúregress√£o de planos de execu√ß√£o‚ÄĚ al√©m de possuir uma interface gr√°fica muito √ļtil na detec√ß√£o de problemas.

Sabe aquela consulta que ficou lenta do nada? Esse recurso é um grande aliado para te ajudar a resolver e a descobrir o motivo.

Como habilitar o Query Store?

O Query Store vem por padr√£o desabilitado.

Para habilitar você tem duas formas, via interface gráfica no Object Explorer do seu Management Studio (SSMS), ou via T-SQL. Vamos exemplificar as duas formas.

1ª Habilitando via interface gráfica:

No Object Explorer clique com o bot√£o direito sobre o seu banco de dados e depois em Propriedades.

 

Ao abrir as propriedades selecione a opção Query Store.

Dentro do menu de op√ß√Ķes do Query Store clique em Operation Mode selecione a op√ß√£o Read-Write.

Configure as op√ß√Ķes de Monitoramento e Reten√ß√£o de acordo com a sua prefer√™ncia e Clique em OK.

O Fabricio Lima, tem uma série bem legal sobre o Query Store e também tem um post bem interessante sobre boas práticas na hora de habilitar esse recurso.

Recomendo a leitura de toda a série.

https://www.fabriciolima.net/blog/2019/02/26/query-store-04-melhores-praticas-para-habilitar-o-query-store/

2ª Habilitando o recurso via T-SQL

Observa√ß√£o:¬† Se o espa√ßo m√°ximo utilizado no Query Store estiver esgotado a propriedade Operation Mode ser√° alterada automaticamente para READ_ONLY impossibilitando novas grava√ß√Ķes.

 


Componentes do Query Store:

O Query Store possui basicamente dois repositórios:

  1. um repositório de planos que armazena os planos de execução;
  2. um reposit√≥rio de estat√≠sticas de tempo de execu√ß√£o que mant√©m informa√ß√Ķes relacionadas √† execu√ß√£o da consulta, como CPU, IO, Mem√≥ria entre outras m√©tricas.

Observa√ß√£o.: Para reduzir o impacto no desempenho, o SQL Server grava por padr√£o as informa√ß√Ķes em cada um desses reposit√≥rios de forma ass√≠ncrona.

Visualizando informa√ß√Ķes do Query Store:

Usando o SSMS após habilitar o Query Store para a sua base de dados, você terá acesso a sete painéis:

  • Regressed Queries (Consultas regredidas): Este painel mostra as consultas que podem ter regredido devido a altera√ß√Ķes no plano de execu√ß√£o. O painel permite visualizar as consultas, seus planos e h√° bot√Ķes para for√ßar e desfor√ßar um plano de consulta.
  • Overall Resource Consumption (Consumo geral de recursos): Este painel permite visualizar o consumo geral de recursos em quatro gr√°ficos: dura√ß√£o, contagem de execu√ß√£o, tempo de CPU e leituras l√≥gicas.
  • Top Resource Consuming Queries (Principais consultas de consumo de recursos): Este painel permite visualizar consultas no conjunto dos principais N consumidores de recursos (o padr√£o √© 25) durante um per√≠odo (o padr√£o √© a √ļltima hora).
  • Queries With Forced Plans (Consultas com planos for√ßados): Este painel permite visualizar as consultas que tiveram o plano de execu√ß√£o for√ßado pelo Query Store.
  • Queries With High Variation (Consultas com alta varia√ß√£o): Este painel pode ser utilizado para identificar consultas com desempenho amplamente vari√°vel.
  • Query Wait Statistics (Estat√≠sticas de Espera da Consulta): Este painel permite visualizar as principais consultas que podem estar gerando estat√≠sticas de espera.
  • Tracked Queries (Consultas rastreadas): Este painel pode ser usado para monitorar uma consulta espec√≠fica.

Para maiores informa√ß√Ķes acesse o link abaixo:

https://docs.microsoft.com/pt-br/sql/relational-databases/performance/best-practice-with-the-query-store?view=sql-server-ver15

 


Algumas DMVs (Dynamic Management Views) e Procedures √ļteis no dia a dia do Query Store:

DMVS :

  • database_query_store_options: Retorna as op√ß√Ķes do Reposit√≥rio de Consultas para este banco de dados.
  • query_store_query: cont√©m informa√ß√Ķes sobre a consulta e suas estat√≠sticas gerais de execu√ß√£o de tempo de execu√ß√£o.
  • query_store_query_text: Armazena o texto T-SQL e o identificador SQL (Hash) ¬†da consulta.
  • query_context_settings: cont√©m informa√ß√Ķes sobre a sem√Ęntica que afeta as configura√ß√Ķes de contexto associadas a uma consulta.
  • query_store_plan: cont√©m informa√ß√Ķes do plano de execu√ß√£o associado a uma consulta.
  • query_store_runtime_stats: Retorna informa√ß√Ķes sobre as estat√≠sticas de execu√ß√£o de tempo de execu√ß√£o para uma consulta.
  • query_store_runtime_stats_interval: Possui informa√ß√Ķes do hor√°rio de in√≠cio e t√©rmino de cada intervalo durante o tempo de execu√ß√£o de uma consulta que foi coletada.

PROCEDURES :

  • sp_query_store_force_plan [ @query_id = ] query_id , [ @plan_id = ] plan_id : permite for√ßar um plano espec√≠fico para uma consulta espec√≠fica.
  • sp_query_store_unforce_plan [ @query_id = ] query_id , [ @plan_id = ] plan_id : permite “desfor√ßar” um plano espec√≠fico para uma consulta espec√≠fica.
  • sp_query_store_remove_plan [ @plan_id = ] plan_id : remove um √ļnico plano do Query Store.
  • sp_query_store_remove_query [ @query_id = ] query_id: remove a consulta, bem como todos os planos associados e estat√≠sticas de tempo de execu√ß√£o do Query Store.
  • sp_query_store_reset_exec_stats [ @plan_id = ] plan_id : limpa as estat√≠sticas de tempo de execu√ß√£o de um plano de consulta espec√≠fico do Query Store.
  • sp_query_store_flush_db: libera a parte na mem√≥ria dos dados do Query Store para o disco.

 

√Č isso a√≠ pessoal, esse post foi mais introdut√≥rio. Em breve espero trazer mais dicas √ļteis na utiliza√ß√£o do Query Store.

Gustavo Larocca

Consultor SQL Server

 

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de coment√°rios s√£o processados.