Loading…

Query Store (#03) – Lock grande ao tentar limpar o Query Store

Fala Pessoal,

Continuando a série sobre o Query Store, antes de entrar nos detalhes de como ele pode nos ajudar em nosso dia a dia, vou mostrar alguns problemas que tive em alguns cenários para que possam ter conhecimento antes de habilitarem a feature em 100% dos ambientes que administram.

Quase 1 ano atrás, em um banco de dados crítico e com uso intenso de recursos, o query store me ajudou bastante a identificar muitas queries problemáticas.

Um certo dia o query store encheu… Vixe…

No query store temos uma opção na tela para limpar as informações que estão la dentro, que é a mesma coisa que executar esse comando abaixo:

alter database Nome_Database set QUERY_STORE CLEAR ALL

Esse comando sempre foi muito rápido de ser executado. Deveria ser algo parecido com um TRUNCATE TABLE, que é bem rápido.

Imaginando que continuaria sendo rápido, fui limpar o query store para pegar novas informações desse ambiente e o comando acabou gerando um grande lock no Banco de Dados:

A conexão 81 já estava rodando a 6 minutos no momento do print (passou de 10 minutos) e gerou locks em outras queries do sistema. #treta

Não tinha o que fazer, só rezar e esperar acabar. Fiquei com receio de matar e piorar ainda mais a situação.

Passou mais alguns minutos, o comando acabou e tudo voltou ao normal.

Isso já tem quase 1 ano que aconteceu. Aí, no dia 16/10/2018, a microsoft liberou esse FIX abaixo:

O FIX corrige exatamente esse problema que tive:

“Assume that you enable Query Store in SQL Server 2016 and 2017. When you run the command ALTER DATABASE <DatabaseName> SET QUERY_STORE CLEAR on a very busy database, you may notice that the transactions and log truncation will be blocked by a Query Store background thread.”

Ou seja, se vai usar o query store, atualize o seu sql server até o Hotfix mais recente!!!

Hoje, você consegue evitar esse problema que eu passei, pois já foi corrigido.

No post abaixo, a Erin Stellato listou uma série de correções que já foram lançadas para o Query Store:

https://www.sqlskills.com/blogs/erin/important-query-store-fixes-january-2019/

São várias correções!

Ela tem muitos outros posts sobre o assunto e é uma das defensoras de mantermos o Query Store ligado sempre nos ambientes. Mas sobre isso falamos nos próximos posts.

Essa é a Erin (ela pediu para tirar uma foto comigo):

A Kendra Little também conseguiu simular um lock com o query store quando você está alterando uma tabela e em seguida limpa o Query Store:

https://sqlworkbooks.com/2018/04/query-store-cleanup-can-be-part-of-a-blocking-chain/

Esse lock da Kendra eu consegui simular aqui e continua. É um comportamento padrão da feature até então.

É só você não limpar o query store durante uma operaão de alterar uma tabela ou outra ação de DBA parecida. Vamos fazer uma coisa de cada vez (rsrs).

Essa é a Kendra (que também pediu para tirar uma foto comigo):

Conclusão: Atualize seu SQL Server com o Hot Fix mais recente antes de habilitar o Query Store.

É isso ai pessoal, até o próximo post da série sobre o Query Store.

Caso não tenha lido o post anterior:

Gostou da dica?

Curta, comente, 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 Leituras e Eventos sobre SQL Server.

Abraços,

Fabrício Lima.

Microsoft Data Platform MVP

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

Deixe uma resposta