{"id":10214,"date":"2019-02-13T08:51:00","date_gmt":"2019-02-13T10:51:00","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=10214"},"modified":"2019-02-13T09:04:44","modified_gmt":"2019-02-13T11:04:44","slug":"query-store-3-lock-grande-ao-tentar-limpar-o-query-store","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2019\/02\/13\/query-store-3-lock-grande-ao-tentar-limpar-o-query-store\/","title":{"rendered":"Query Store (#03) &#8211; Lock grande ao tentar limpar o Query Store"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Continuando a s\u00e9rie 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\u00e1rios para que possam ter conhecimento antes de habilitarem a feature em 100% dos ambientes que administram.<\/p>\n<p>Quase 1 ano atr\u00e1s, em um banco de dados cr\u00edtico e com uso intenso de recursos, o query store me ajudou bastante a identificar muitas queries problem\u00e1ticas.<\/p>\n<p>Um certo dia o query store encheu&#8230; Vixe&#8230;<\/p>\n<p>No query store temos uma op\u00e7\u00e3o na tela para limpar as informa\u00e7\u00f5es que est\u00e3o la dentro, que \u00e9 a mesma coisa que executar esse comando abaixo:<\/p>\n<p><strong>alter database Nome_Database set QUERY_STORE CLEAR ALL<\/strong><\/p>\n<p>Esse comando sempre foi muito r\u00e1pido de ser executado. Deveria ser algo parecido com um <strong>TRUNCATE TABLE<\/strong>, que \u00e9 bem r\u00e1pido.<\/p>\n<p>Imaginando que continuaria sendo r\u00e1pido, fui limpar o query store para pegar novas informa\u00e7\u00f5es desse ambiente e o comando acabou gerando um grande lock no Banco de Dados:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10218\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store.png\" alt=\"\" width=\"1265\" height=\"412\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store.png 1680w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-300x98.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-1024x334.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-768x251.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-1536x501.png 1536w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-700x228.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-410x134.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-100x33.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-275x90.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Lock_clear_query_Store-20x7.png 20w\" sizes=\"auto, (max-width: 1265px) 100vw, 1265px\" \/><\/p>\n<p>A conex\u00e3o <strong>81<\/strong> j\u00e1 estava rodando a <strong>6 minutos<\/strong> no momento do print (passou de 10 minutos) e gerou locks em outras queries do sistema. #treta<\/p>\n<p>N\u00e3o tinha o que fazer, s\u00f3 rezar e esperar acabar. Fiquei com receio de matar e piorar ainda mais a situa\u00e7\u00e3o.<\/p>\n<p>Passou mais alguns minutos, o comando acabou e tudo voltou ao normal.<\/p>\n<p>Isso j\u00e1 tem quase 1 ano que aconteceu. A\u00ed, no dia <strong>16\/10\/2018<\/strong>, a microsoft liberou esse <strong>FIX<\/strong> abaixo:<\/p>\n<ul>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4461562\/transactions-and-log-truncation-may-be-blocked-when-using-query-store\" target=\"_blank\" rel=\"noopener\">https:\/\/support.microsoft.com\/en-us\/help\/4462262\/cumulative-update-11-for-sql-server-2017<\/a><\/li>\n<\/ul>\n<p>O <strong>FIX<\/strong> corrige exatamente esse problema que tive:<\/p>\n<p>&#8220;Assume that you enable Query\u00a0Store\u00a0in\u00a0SQL Server 2016 and 2017. When you run\u00a0the command\u00a0<strong>ALTER DATABASE &lt;<em>DatabaseName&gt;<\/em>\u00a0SET QUERY_STORE CLEAR\u00a0<\/strong>on a <strong>very busy database<\/strong>, you may notice that the <strong>transactions<\/strong> and log truncation <strong>will be blocked by a Query Store<\/strong> background thread.&#8221;<\/p>\n<p><strong>Ou seja, se vai usar o query store, atualize o seu sql server at\u00e9 o Hotfix mais recente!!!<\/strong><\/p>\n<p>Hoje, voc\u00ea consegue evitar esse problema que eu passei, pois j\u00e1 foi corrigido.<\/p>\n<p>No post abaixo, a <strong>Erin Stellato\u00a0<\/strong>listou uma s\u00e9rie de corre\u00e7\u00f5es que j\u00e1 foram lan\u00e7adas para o Query Store:<\/p>\n<p><a href=\"https:\/\/www.sqlskills.com\/blogs\/erin\/important-query-store-fixes-january-2019\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.sqlskills.com\/blogs\/erin\/important-query-store-fixes-january-2019\/<\/a><\/p>\n<p>S\u00e3o v\u00e1rias corre\u00e7\u00f5es!<\/p>\n<p>Ela tem muitos outros posts sobre o assunto e \u00e9 uma das defensoras de mantermos o Query Store ligado sempre nos ambientes. Mas sobre isso falamos nos pr\u00f3ximos posts.<\/p>\n<p>Essa \u00e9 a Erin (ela pediu para tirar uma foto comigo):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8302 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin.jpg\" alt=\"\" width=\"398\" height=\"299\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin.jpg 1280w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-300x225.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-1024x770.jpg 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-768x577.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-700x526.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-410x308.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-100x75.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-275x207.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Erin-20x15.jpg 20w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/p>\n<p>A <strong>Kendra Little<\/strong> tamb\u00e9m conseguiu simular um lock com o query store quando voc\u00ea est\u00e1 alterando uma tabela e em seguida limpa o Query Store:<\/p>\n<p><a href=\"https:\/\/sqlworkbooks.com\/2018\/04\/query-store-cleanup-can-be-part-of-a-blocking-chain\/\" target=\"_blank\" rel=\"noopener\">https:\/\/sqlworkbooks.com\/2018\/04\/query-store-cleanup-can-be-part-of-a-blocking-chain\/<\/a><\/p>\n<p>Esse lock da Kendra eu consegui simular aqui e continua. \u00c9 um comportamento padr\u00e3o da feature at\u00e9 ent\u00e3o.<\/p>\n<p>\u00c9 s\u00f3 voc\u00ea n\u00e3o limpar o query store durante uma opera\u00e3o de alterar uma tabela ou outra a\u00e7\u00e3o de DBA parecida. Vamos fazer uma coisa de cada vez (rsrs).<\/p>\n<p>Essa \u00e9 a Kendra (que tamb\u00e9m pediu para tirar uma foto comigo):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8303 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra.jpg\" alt=\"\" width=\"413\" height=\"310\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra.jpg 960w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-300x225.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-768x576.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-700x525.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-410x308.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-100x75.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-275x206.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/Kendra-20x15.jpg 20w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/p>\n<p><strong>Conclus\u00e3o: Atualize seu SQL Server com o Hot Fix mais recente antes de habilitar o Query Store.<\/strong><\/p>\n<p>\u00c9 isso ai pessoal, at\u00e9 o pr\u00f3ximo post da s\u00e9rie sobre o Query Store.<\/p>\n<p>Caso n\u00e3o tenha lido o post anterior:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/02\/06\/query-store-01-introducao\/\" target=\"_blank\" rel=\"noopener\">Query Store (#1) &#8211; Introdu\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/02\/11\/query-store-2-voce-esta-utilizando-o-query-store-do-sql-server-em-producao\/\" target=\"_blank\" rel=\"noopener\">Query Store (#2) \u2013 Voc\u00ea est\u00e1 utilizando o Query Store do SQL Server em produ\u00e7\u00e3o?<\/a><\/li>\n<\/ul>\n<p><b>Gostou da dica?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Youtube<\/a>\u00a0, curta a\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">P\u00e1gina no Facebook<\/a>\u00a0 e siga nosso perfil no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.instagram.com\/fabriciolimasolucoesembd\/\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\">Instagram<\/a>\u00a0para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima.<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Continuando a s\u00e9rie 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\u00e1rios para que possam ter conhecimento antes de habilitarem a feature em 100% dos ambientes que administram. Quase 1 ano atr\u00e1s, em [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,6,33,280],"tags":[1693,1619,1429,1687,1688,1689,63,1258,1464,1692,1362,1686,1690,1618,1463,40,953],"class_list":["post-10214","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-clear-all","tag-desempenho-sql-server","tag-lentidao-sql-server","tag-monitorar-cpu","tag-monitorar-disco","tag-monitorar-memoria","tag-performance","tag-problema-performance","tag-query-store","tag-query_store","tag-sql-server-2016","tag-sql-server-2017","tag-sql-server-2019","tag-sql-server-lento","tag-sql-server-query-store","tag-tuning","tag-tuning-sql-server"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/10214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=10214"}],"version-history":[{"count":13,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/10214\/revisions"}],"predecessor-version":[{"id":10261,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/10214\/revisions\/10261"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=10214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=10214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=10214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}