Banco de Dados

17 abr, 2019

Query Store – Parte 01

Publicidade

Fala, pessoal!

O Query Store hoje já não é novidade para ninguém. Disponibilizado desde o SQL Server 2016, temos vários artigos e vídeos que já falam um pouco dessa feature.

Contudo, pretendo fazer uma série de artigos para tentar cobrir de uma forma mais detalhada as funcionalidades, benefícios e possíveis problemas do Query Store.

  • “Eu ouvi problemas, Fabrício?”

Sim. Também já tive problemas implantando o Query Store nos clientes. Vou compartilhar essas experiências de uso no dia a dia com vocês nos próximos artigos.

Caso ainda não conheça o Query Store, segue uma breve introdução com minhas palavras:

O que é Query Store?

Query Store é uma funcionalidade que surgiu no SQL Server 2016, que nos ajuda na análise de problemas de performance e está disponível desde a versão Express até a versão Enterprise. Ou seja, você vai poder usar de qualquer forma quando migrar para o SQL Server 2016 ou superior.

Dica de ouro: migre para o SQL Server 2016 ou superior!

Como já disse em minhas palestras, Tuning é o assunto mais requisitado por clientes para Consultorias. Dessa forma, Query Store é um assunto obrigatório para todos nós que trabalhamos com consultorias ou administrando um SQL Server em uma empresa.

O que faz o Query Store?

O Query Store armazena um histórico de execução de queries e planos de execução, incluindo estatísticas de consumo das queries após sua execução. Além de armazenar, ele também disponibiliza gráficos e DMVs para que possamos utilizar essas informações valiosas.

No que isso me ajuda no meu dia a dia de DBA?

Confira alguns exemplos de como ele pode nos ajudar no nosso dia a dia de DBA:

  • Ele nos ajuda a identificar quando uma procedure que normalmente é executada de forma rápida, de uma hora para a outra, passa a rodar lenta. Com o Query Store, conseguimos ver os dois planos de execução dessa procedure (rápido e o lento), comparar, identificar o motivo e até forçar de forma muito simples o uso do plano que é o mais rápido
  • Quando migramos o SQL Server de versão, com as novas regras de otimização do Query Optimizer dos níveis de compatibilidades mais recentes, a maioria das queries tendem a rodar igual ou mais rápidas. Contudo, uma query ou outra pode rodar de forma mais lenta (isso acontece de mais no meu dia a dia). Com o Query Store conseguiremos identificar esse problema de forma muito mais simples nas migrações para o SQL Server 2016
  • Temos essas informações mesmo após um boot, diferentemente das DMVs, que são reiniciadas após um Restart do SQL Server. O cliente reinicia o SQL Server e depois chama o consultor para descobrir o que era. Agora nós, consultores, teremos mais informações com o Query Store para analisar um problema
  • Identificar as queries mais executadas
  • Identificar as queries mais demoradas
  • Identificar as queries que mais consumiram CPU, Disco e Memória
  • Informação importante: o Query Store é habilitado por banco de dados. Não é à nível de toda a instância do SQL Server

Qual o custo do Query Store? Ele vai parar meu banco?

Assim como o Profile e Extended Event, o Query Store também tem um custo mínimo para armazenar essas informações.

Contudo, esse custo vai depender muito das configurações que você fez para habilitar o Query Store e do volume transacional do seu ambiente.

Tem algumas configurações que fazem o Query Store guardar mais ou menos informações para reduzir esse consumo.

Além desse pequeno processamento que temos a mais, já tive alguns problemas um pouco mais graves conforme veremos a seguir.

Devo habilitar o Query Store para todos os meus ambientes sem medo?

Se o seu ambiente é muito transacional e com muita query Ad hoc (que geram planos diferentes), ao habilitar, fique de olho no seu monitoramento.

Em um banco grande, com muita query Adhoc, tive um problema com o query store que gerou waits nas queries e lentidão no ambiente. Também já tive problema na hora de parar o Query Store e de limpar o Query Store. Falaremos em breve sobre esses problemas.

Onde essas informações ficam armazenadas?

Por questões de performance, essas informações são armazenadas em memória inicialmente e de forma assíncrona são salvas em disco para que não se apaguem.

Em caso de crash, podemos perder poucas informações que estavam em memória e ainda não foram salvas em disco, mas será uma perda pequena. Teremos muitas informações de performance para analisar no ambiente.

Como habilito e uso o Query Store?

Basta habilitar o Query Store na sua base de dados e já estará coletando as informações.

ALTER DATABASE NOME_BASE SET QUERY_STORE = ON
  • Gostei desse negócio! Quero conhecer mais sobre o assunto

Nos próximos artigos vamos começar a detalhar mais essas informações e realizar testes práticos para nos ajudar em nosso aprendizado sobre o Query Store – esse não tem jeito, você terá que aprender uma hora ou outra.

Não perca os próximos artigos! Gostou da dica? Curta, comente e compartilhe com os coleguinhas.

Assine meu canal no YouTube, curta a página no Facebook e siga nosso perfil no Instagram para receber dicas de leitura e eventos sobre SQL Server.

Abraços!