{"id":7402,"date":"2019-02-06T10:43:28","date_gmt":"2019-02-06T12:43:28","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=7402"},"modified":"2019-02-11T15:52:38","modified_gmt":"2019-02-11T17:52:38","slug":"query-store-01-introducao","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2019\/02\/06\/query-store-01-introducao\/","title":{"rendered":"Query Store (#01) &#8211; Introdu\u00e7\u00e3o"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7404 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore.png\" alt=\"\" width=\"586\" height=\"152\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore.png 1094w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-300x78.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-1024x265.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-768x199.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-700x181.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-410x106.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-100x26.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-275x71.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore-20x5.png 20w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/p>\n<p>Fala Pessoal,<\/p>\n<p>O Query Store hoje j\u00e1 n\u00e3o \u00e9 novidade para ningu\u00e9m, disponibilizado desde o SQL Server 2016, temos v\u00e1rios posts e v\u00eddeos que j\u00e1 falam um pouco dessa feature.<\/p>\n<p>Contudo, pretendo fazer uma s\u00e9rie de post para tentar cobrir de uma forma mais detalhada as funcionalidades, benef\u00edcios e poss\u00edveis problemas do Query Store.<\/p>\n<p><strong>Eu ouvi problemas Fabr\u00edcio? <\/strong><\/p>\n<p>Sim.<\/p>\n<p>Tamb\u00e9m j\u00e1 tive problemas implantando o Query Store nos clientes. Vou compartilhar essas experi\u00eancias de uso no dia a dia com voc\u00eas nos pr\u00f3ximos posts.<\/p>\n<p>Caso ainda n\u00e3o conhe\u00e7a o Query Store, segue uma breve introdu\u00e7\u00e3o com minhas palavras:<\/p>\n<h5>O que \u00e9 Query Store?<\/h5>\n<p>Query Store \u00e9 uma funcionalidade que surgiu no SQL Server 2016, que nos ajuda na an\u00e1lise de problemas de performance e est\u00e1 dispon\u00edvel desde a vers\u00e3o Express at\u00e9 a vers\u00e3o Enterprise. Ou seja, voc\u00ea vai poder usar\u00a0de qualquer forma quando migrar para o SQL Server 2016 ou superior.<\/p>\n<p>Dica de ouro: Migre para o <a href=\"https:\/\/www.fabriciolima.net\/blog\/2016\/11\/21\/tem-sql-server-standard-na-sua-empresa-hora-de-planejar-a-migracao-para-o-sql-server-2016\/\" target=\"_blank\" rel=\"noopener\">SQL Server 2016<\/a>\u00a0ou superior!!!<\/p>\n<p>Como j\u00e1 disse em minhas palestras, Tuning \u00e9 o assunto mais requisitado por clientes para Consultorias. Dessa forma, Query Store \u00e9 um assunto obrigat\u00f3rio para todos n\u00f3s que trabalhamos com consultorias ou administrando um SQL Server\u00a0em uma empresa.<\/p>\n<h5>O que faz o Query Store?<\/h5>\n<p>O\u00a0Query Store armazena um hist\u00f3rico de execu\u00e7\u00e3o de queries e planos de execu\u00e7\u00e3o incluindo\u00a0estat\u00edsticas de consumo das queries ap\u00f3s sua execu\u00e7\u00e3o.\u00a0Al\u00e9m de armazenar, ele tamb\u00e9m disponibiliza gr\u00e1ficos e DMV&#8217;s para que possamos utilizar essas informa\u00e7\u00f5es valiosas.<\/p>\n<p>O que isso me ajuda no meu Dia a Dia de DBA?<\/p>\n<p><strong>Seguem alguns exemplos de como\u00a0ele pode nos ajudar no nosso Dia a Dia de DBA:<\/strong><\/p>\n<ul>\n<li>Ele nos ajuda a identificar quando uma procedure\u00a0que normalmente \u00e9 executada de forma r\u00e1pida, de uma hora para a outra, passa a rodar\u00a0lenta.\u00a0Com o Query Store, conseguimos ver os dois planos de execu\u00e7\u00e3o dessa procedure (r\u00e1pido e o lento), comparar, identificar o motivo e at\u00e9 for\u00e7ar de forma muito simples o uso do plano que\u00a0\u00e9 o mais r\u00e1pido.<\/li>\n<li>Quando migramos o SQL Server de vers\u00e3o,\u00a0com as novas regras de otimiza\u00e7\u00e3o do Query Optimizer dos n\u00edveis de compatibilidades mais recentes, a maioria das queries tendem a rodar igual ou mais r\u00e1pidas. Contudo, uma query ou outra pode rodar de forma mais lenta (isso acontece demais no meu dia a dia). Com o Query Store vamos conseguir identificar esse problema de forma muito mais simples nas migra\u00e7\u00f5es para o SQL Server 2016.<\/li>\n<li>Temos essas informa\u00e7\u00f5es mesmo ap\u00f3s um boot, diferentemente das DMV&#8217;s que s\u00e3o reiniciadas ap\u00f3s um Restart do SQL Server. O cliente reinicia o SQL Server e depois chama o consultor para descobrir o que era. Agora n\u00f3s consultores, teremos mais informa\u00e7\u00f5es com o Query Store para analisar um problema.<\/li>\n<li>Identificar as queries mais executadas;<\/li>\n<li>Identificar as queries mais demoradas;<\/li>\n<li>Identificar as queries que mais consumiram CPU, Disco e Mem\u00f3ria;<\/li>\n<li>Etc&#8230;<\/li>\n<\/ul>\n<p>Informa\u00e7\u00e3o importante: O Query Store \u00e9 habilitado por banco de dados. N\u00e3o \u00e9 a n\u00edvel de toda a inst\u00e2ncia do SQL Server.<\/p>\n<h5>Qual o custo do Query Store? Ele vai parar meu Banco?<\/h5>\n<p>Assim como o Profile e Extended Event, o Query Store tamb\u00e9m tem um custo m\u00ednimo para armazenar essas informa\u00e7\u00f5es. Contudo,\u00a0esse custo vai depender muito das configura\u00e7\u00f5es que voc\u00ea fez para habilitar o Query Store e do volume transacional do seu ambiente.<\/p>\n<p>Tem algumas configura\u00e7\u00f5es que fazem o Query Store guardar mais ou menos informa\u00e7\u00f5es para reduzir esse consumo.<\/p>\n<p>Al\u00e9m desse pequeno processamento que temos a mais, j\u00e1 tive alguns problemas um pouco mais graves conforme abaixo.<\/p>\n<h5>Devo habilitar o Query Store para todos os meus ambientes sem medo?<\/h5>\n<p>Se seu ambiente \u00e9 muito transacional e com muita query Ad hoc (que geram planos diferentes), ao habilitar, fique de olho no seu monitoramento.<\/p>\n<p>Em um banco grande, com muita query Adhoc, tive um problema com o query store que gerou waits nas queries e lentid\u00e3o no ambiente.<\/p>\n<p>Tamb\u00e9m j\u00e1 tive problema na hora de parar o Query Store e de limpar o Query Store.<\/p>\n<p>Falaremos em breve sobre esses problemas.<\/p>\n<h5>Onde essas informa\u00e7\u00f5es ficam armazenadas?<\/h5>\n<p>Por quest\u00f5es de performance essas informa\u00e7\u00f5es s\u00e3o armazenadas em mem\u00f3ria inicialmente e de forma ass\u00edncrona s\u00e3o salvas em disco para que n\u00e3o se apaguem.<\/p>\n<p>Em caso de crash, podemos perder poucas informa\u00e7\u00f5es que estavam em mem\u00f3ria e ainda n\u00e3o\u00a0foram salvas em disco, mas ser\u00e1 uma perda pequena. Teremos muitas informa\u00e7\u00f5es de performance para analisar no ambiente.<\/p>\n<h5>Como\u00a0habilito e uso o Query Store?<\/h5>\n<p>Basta habilitar o Query Store na sua base de dados e j\u00e1 estar\u00e1 coletando as informa\u00e7\u00f5es.<\/p>\n<pre class=\"lang:tsql decode:true\">ALTER DATABASE NOME_BASE SET QUERY_STORE = ON<\/pre>\n<h6>Gostei desse neg\u00f3cio! Quero conhecer mais sobre o assunto.<\/h6>\n<p>Nos pr\u00f3ximos posts vamos\u00a0come\u00e7ar a detalhar mais essas informa\u00e7\u00f5es e realizar testes pr\u00e1ticos para nos ajudar em nosso aprendizado sobre o Query Store.\u00a0Esse n\u00e3o tem jeito, voc\u00ea ter\u00e1 que aprender uma hora ou outra.<\/p>\n<p>N\u00e3o percam os pr\u00f3ximos posts!<\/p>\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 <a href=\"https:\/\/www.instagram.com\/fabriciolimasolucoesembd\/\" target=\"_blank\" rel=\"noopener\">Instagram<\/a> para 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, O Query Store hoje j\u00e1 n\u00e3o \u00e9 novidade para ningu\u00e9m, disponibilizado desde o SQL Server 2016, temos v\u00e1rios posts e v\u00eddeos que j\u00e1 falam um pouco dessa feature. Contudo, pretendo fazer uma s\u00e9rie de post para tentar cobrir de uma forma mais detalhada as funcionalidades, benef\u00edcios e poss\u00edveis problemas do Query Store. Eu [&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,942,33,280],"tags":[1619,1429,1687,1688,1689,63,1258,1464,1362,1686,1618,1463,40,953],"class_list":["post-7402","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-sql-server","category-virtual-pass-br","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-sql-server-2016","tag-sql-server-2017","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\/7402","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=7402"}],"version-history":[{"count":9,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/7402\/revisions"}],"predecessor-version":[{"id":10252,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/7402\/revisions\/10252"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=7402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=7402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=7402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}