O que é o Query Store e como ele pode te ajudar?

Fala pessoal, tudo bem?
Já sabem o que é ou usaram o Query Store(Repositório de Consultas) no SQL Server?

É uma excelente funcionalidade/ferramenta que surgiu no SQL 2016 e nos dá uma grande ajuda no acompanhamento do ambiente, fornecendo um baseline e facilita a solução de problemas de desempenho. Se vc estiver usando o SQL 2016, certifique-se que seu ambiente esteja no cumulative update CU1 ou superior, para corrigir um bug na limpeza dos dados que afeta a coleta e pode impactar a partição dos logs de erro do sql server.

Uma das coisas boas e não técnicas dele, é que o query store está disponível para todas as edições do SQL, desde express até a enterprise.

Mas o que ele tem de tão bom?

Como citado acima, além de estar disponível pra todos que usam que usam o SQL nas versões suportadas pela Microsoft atualmente, ele captura e armazena informações relacionadas às consultas executadas em um banco de dados, ou seja, se alguém reiniciar a instância, os dados se manterão persistidos em tabelas no banco que o Query store está habilitado e os dados podem ser consultados pela interface do Query Store ou por meio de views do sistema.

Como assim no banco que ele está habilitado?
Isso mesmo, se vc tiver 10 bancos de usuário e quiser habilitar apenas em um, que vc já sabe que é o seu “gargalo”, vc pode!

Quais tipos de informação ele coleta?

São mais do que apenas qual é a consulta em si, também conseguimos o plano dessa consulta e as estatísticas de tempo compilação e execução, duração e CPU ela usou, as leituras lógicas e físicas, e as gravações de uma consulta.

A query em si também é armazenada quando é compilada pela primeira vez, e o plano de execução inicial também é enviado para o Query Store. Se a mesma query usar um plano diferente a qualquer momento, devido a uma recompilação, ou porque o plano foi descartado do cache, o novo plano é adicionado ao query store e associado a essa consulta.

Detalharemos em outro post, mas para um usuário visualizar os dados ele precisa da permissão VIEW DATABASE STATE e para de fato utilizar o query store forçando planos ele precisa da permissão de db_owner. O que faz sentido para um DBA, mas as vezes não para um Dev aspirante a Severino.

Para habilitar é super simples, só precisa de um pouco de cuidado. E no Azure SQL database ele já vem habilitado. 🙂

Acho que essa vai ser a parte 1 de uma série de 5 posts!

Uma das motivações de iniciar essa série é que cairam duas questões sobre Query Store na prova DP300 que fiz no início do mês.

Por enquanto é isso pessoal..
Abraço

Deixe um comentário