Loading…

Query Store (#05) – Lock gerado ao executar o comando SET QUERY_STORE = OFF

Fala Pessoal,

Continuando a série sobre o Query Store, hoje vou compartilhar um outro problema que tive no meu dia a dia.

Mais uma vez utilizei essa baita ferramenta que é o Query Store para agilizar meu trabalho de Tuning de queries em um cliente.

Ferramenta sensacional para isso. Te dá uma produtividade muito grande nesse trabalho.

Identificada e melhorada várias queries, fui desligar o Query Store, pois já tinha finalizado o trabalho.

Quando finalizamos o Query Store, ele faz um Flush das informações que ainda está mantendo em memória para o disco.

Isso pode demorar um pouco dependendo da quantidade de dados que estiver na memória.

Mas o que não esperamos é que isso gere um lock em nosso ambiente, certo?

Pois é… Foi o que aconteceu conforme pode ser visto abaixo:

A sessão 753, que estava desligando o Query Store, bloqueou a 773 (não deu para ver no print pois tinham 37 sessões no lock), que gerou uma cadeia de lock bloqueando várias outras queries.

Nesse caso, após esperar 1 minuto, matei a sessão753 que estava desligando o Query Store e, após um tempo, consegui rodar o comando novamente sem o lock.

Trocando alguns e-mails com a Erin Stellato e o Ola Hallengren sobre esse problema, uma das possibilidades era de que isso também era um BUG e que o FIX que mostrei no post anterior (Clique aqui para ler), “poderia” resolver esse problema também.

Falei poderia, pois o FIX diz que resolveu o problema de lock para o ALTER DATABASE SET QUERY_STORE CLEAR, contudo, como o SET QUERY_STORE = OFF também é uma operação de “ALTER DATABASE”, imaginamos que era possível que também tivesse resolvido junto.

Não tivemos uma resposta oficial da microsoft sobre esse problema específico.

A instância desse cliente estava na versão SQL Server 2016 SP2 CU4 e o FIX foi liberado no CU5 para o SP2 do SQL 2016.

Logo, antes de usar o Query Store novamente nesse cliente, pedi para que fosse atualizado o SQL Server.

É isso aí pessoal, mesma dica do post anterior, atualize seu SQL Server antes de usar o Query Store e, se possível, habilite, desabilite e limpe em horários de pouco movimento para reduzir a chance de acontecer algo como esse do exemplo.

Em ambientes com banco tranquilo, é difícil disso acontecer. Vai acontecer em bancos pesados com muita query Ad Hoc rodando que grava muita coisa no Query Store. Mas isso é assunto para os próximos posts.

É 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