{"id":10266,"date":"2019-02-26T08:40:24","date_gmt":"2019-02-26T11:40:24","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=10266"},"modified":"2019-02-26T14:28:13","modified_gmt":"2019-02-26T17:28:13","slug":"query-store-04-melhores-praticas-para-habilitar-o-query-store","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2019\/02\/26\/query-store-04-melhores-praticas-para-habilitar-o-query-store\/","title":{"rendered":"Query Store (#04) &#8211; Melhores pr\u00e1ticas para habilitar o Query Store"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Continuando a s\u00e9rie sobre o Query Store, hoje vou dar algumas dicas para voc\u00ea que deseja habilitar o Query Store em produ\u00e7\u00e3o.<\/p>\n<p>Quando habilitamos o Query Store, ele vem com essas configura\u00e7\u00f5es por default:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-10269 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01.png\" alt=\"\" width=\"682\" height=\"325\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01.png 854w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-300x143.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-768x366.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-700x334.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-410x195.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-100x48.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-275x131.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_01-20x10.png 20w\" sizes=\"auto, (max-width: 682px) 100vw, 682px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Vamos falar um pouco sobre essas 4 op\u00e7\u00f5es de reten\u00e7\u00e3o do query store destacadas acima.<\/p>\n<h6>Max Size(MB)<\/h6>\n<p>Essa op\u00e7\u00e3o n\u00e3o tem a ver com impacto de performance do Query Store, mas sim com o volume de dados que voc\u00ea vai armazenar.<\/p>\n<p>Na minha experi\u00eancia de uso, 100 MB n\u00e3o dura muita coisa.<\/p>\n<p><strong>Normalmente utilizo 1 ou 2 GB nessa configura\u00e7\u00e3o para conseguir ter mais informa\u00e7\u00f5es no Query Store.<\/strong><\/p>\n<p>A <a href=\"https:\/\/www.sqlskills.com\/about\/erin-stellato\/\" target=\"_blank\" rel=\"noopener\">Erin Stellato<\/a> cita em um de seus posts que j\u00e1 viu um Query Store de produ\u00e7\u00e3o com 50 GB de informa\u00e7\u00f5es.<\/p>\n<p>Conseguimos monitorar o espa\u00e7o utilizado pelo Query Store com a query abaixo:<\/p>\n<pre class=\"lang:tsql decode:true\">SELECT actual_state_desc, desired_state_desc, current_storage_size_mb,   \r\n    max_storage_size_mb, readonly_reason  \r\nFROM sys.database_query_store_options;<\/pre>\n<p>Depois vou fazer um post com um alerta para monitorar esse tamanho e enviar um e-mail.<\/p>\n<p>No <strong>Azure SQL Database<\/strong>, hoje (26\/02\/2019), o default para uma base <strong>Basic<\/strong> \u00e9 de <strong>10 MB<\/strong>, para uma base <strong>Standard<\/strong> \u00e9 de <strong>100 MB<\/strong> e para uma base <strong>Premium<\/strong> \u00e9 de <strong>1 GB<\/strong>.<\/p>\n<h6>Query Store Capture Mode<\/h6>\n<p><strong>Essa \u00e9 a op\u00e7\u00e3o mais importante para se configurar,<\/strong> caso voc\u00ea tenha medo do Query Store impactar a performance do seu ambiente.<\/p>\n<p>Se ela tiver configurada como <strong>ALL<\/strong>, o Query Store vai armazenar todas as queries que s\u00e3o executadas.<\/p>\n<p>Em um ambiente grande ou com muita query <strong>Ad Hoc<\/strong>, o n\u00famero de queries e planos que o Query Store vai armazenar ser\u00e1 muito grande e isso pode gerar uma sobrecarga maior do que o comum no ambiente.<\/p>\n<p>Mudando essa configura\u00e7\u00e3o para <strong>AUTO<\/strong>, o query store vai ignorar queries mais simples que n\u00e3o precisar\u00edamos monitorar.<\/p>\n<p>Quando utilizamos o modo <strong>AUTO<\/strong>, as regras exatas que definem se um plano vai ser gravado ou n\u00e3o pelo Query Store n\u00e3o s\u00e3o documentadas. Dessa forma, a microsoft pode alterar essa regra quando quiser.<\/p>\n<p>Contudo, um caso dessa regra j\u00e1 consegui pegar em teste (dica de um MVP da R\u00fassia) e mostrarei para voc\u00eas em um pr\u00f3ximo post que falaremos s\u00f3 sobre esse modo de captura.<\/p>\n<p><b>Opini\u00e3o<\/b><strong>\u00a0do Fabr\u00edcio: Essa op\u00e7\u00e3o deveria vir como default configurada como AUTO e, se eu quisesse logar todas as execu\u00e7\u00f5es de queries, incluindo as mais simples, eu colocaria como ALL. A configura\u00e7\u00e3o default devia ser a menos impactante poss\u00edvel.<\/strong><\/p>\n<p>No <strong>Azure SQL Database<\/strong>, hoje (26\/02\/2019), o default j\u00e1 est\u00e1 vindo como AUTO.<\/p>\n<h6><strong class=\"\">Size Based Cleanup Mode\u00a0<\/strong><\/h6>\n<p>Essa op\u00e7\u00e3o vem por default como <strong>AUTO<\/strong> e devemos manter assim.<\/p>\n<p>Com essa configura\u00e7\u00e3o o Query Store vai limpar automaticamente seus dados mais antigos e menos custosos quando chegar a 90% de consumo de espa\u00e7o.<\/p>\n<p>Vale alguns testes no futuro para explorar detalhes de como funciona essa op\u00e7\u00e3o. Existem alguns XEvents que nos mostram alguns detalhes de como isso funciona.<\/p>\n<h6><strong>Stale Query Threshold (Days):<\/strong><\/h6>\n<p>Essa configura\u00e7\u00e3o determina quantos dias voc\u00ea vai manter os dados no Query Store.<\/p>\n<p>O Default \u00e9 de 30 dias de armazenamento.<\/p>\n<p><strong>Minha sugest\u00e3o \u00e9 que se voc\u00ea n\u00e3o for ficar olhando e comparando 30 dias de informa\u00e7\u00f5es do Query Store, que reduza esse valor para uma ou duas semanas.<\/strong><\/p>\n<p>Em ambientes com um n\u00famero grande de Queries, muitas vezes nem conseguimos ver as informa\u00e7\u00f5es do Query Store via gr\u00e1ficos, pois demora bastante:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-10276 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03.png\" alt=\"\" width=\"691\" height=\"315\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03.png 779w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-300x136.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-768x349.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-700x318.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-410x186.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-100x45.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-275x125.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_03-20x9.png 20w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/p>\n<p>Nesse caso, ter\u00e1 que pegar as informa\u00e7\u00f5es para analisar via Query. Vamos ver mais detalhes de como fazer isso em outros posts.<\/p>\n<p>Reduzindo o volume de informa\u00e7\u00f5es armazenadas pode ajudar na velocidade para visualizar esses dados.<\/p>\n<p>No <strong>Azure SQL Database<\/strong>, hoje (26\/02\/2019), o default tamb\u00e9m \u00e9 30 dias, exceto em uma database Basic, que vem configurada como 7 dias.<\/p>\n<h6>Data Flush Interval (Minutes)<\/h6>\n<p>Para reduzir o impacto de implanta\u00e7\u00e3o, os dados do Query Store s\u00e3o armazenados em mem\u00f3ria e posteriormente \u00e9 realizado um flush ass\u00edncrono para persistir os dados no disco.<\/p>\n<p>Esse flush ocorre a cada 15 minutos por default.<\/p>\n<p><strong>Essa configura\u00e7\u00e3o eu n\u00e3o altero.<\/strong><\/p>\n<p>Com ele voc\u00ea pode perder at\u00e9 15 minutos de informa\u00e7\u00f5es do Query Store em caso de problema, mas para quem hoje vive do Plan Cache que n\u00e3o tem dado persistido, estamos no lucro com o Query Store.<\/p>\n<h6>Statistics Collection Interval<\/h6>\n<p><strong>O padr\u00e3o desse cara \u00e9 de 1 hora e n\u00e3o costumo alterar.<\/strong><\/p>\n<p>Essa configura\u00e7\u00e3o diz que o Query Store vai agrupar as informa\u00e7\u00f5es de estat\u00edsticas a cada uma hora para cada plano e vai somar o consumo de CPU, Disco, Mem\u00f3ria e etc&#8230;<\/p>\n<p>Com esse agrupamento, a quantidade de dados persistida no Query Store \u00e9 reduzida.<\/p>\n<p>Voc\u00ea pode mudar o padr\u00e3o de 60 minutos para 1, 5, 10, 15, 30, 60 ou 1440 minutos.<\/p>\n<p>Reduzindo ter\u00e1 informa\u00e7\u00f5es mais granulares. Contudo, se reduzir esse tempo para 30 minutos, vai armazenar o dobro de espa\u00e7o que utilizaria com a configura\u00e7\u00e3o de 60 minutos, pois a cada 30 minutos um registro ser\u00e1 gerado para cada plano na view\u00a0<strong>sys.query_store_runtime_stats<\/strong>.<\/p>\n<p>Repare no exemplo abaixo onde temos informa\u00e7\u00f5es do\u00a0<strong>plano 44<\/strong> armazenadas 2 vezes na view <strong>sys.query_store_runtime_stat<\/strong>s, 1 vez para o intervalo de <strong>18:00 \u00e0s 19:00<\/strong> e a outra para o intervalo de <strong>19:00 \u00e0s 20:00<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-10275 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04.png\" alt=\"\" width=\"850\" height=\"312\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04.png 1274w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-300x110.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-1024x376.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-768x282.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-700x257.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-410x151.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-100x37.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-275x101.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_04-20x7.png 20w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>Mudando para 30 minutos, se essa query for executada o tempo todo, ter\u00edamos 4 linhas ao inv\u00e9s de 2 linhas nessa view.<\/p>\n<p>&nbsp;<\/p>\n<p>O Query Store j\u00e1 vem habilitado por default no <strong>Azure SQL Database<\/strong> e est\u00e1 ligado hoje para milhares de databases.<\/p>\n<p>Logo, a microsoft est\u00e1 assumindo que essa feature \u00e9 muito v\u00e1lida e que ela ajuda muito mais do que impacta os ambientes com algum overhead, concordam?<\/p>\n<p>Segue abaixo as configura\u00e7\u00f5es default do Query Store para uma base Basic no <strong>Azure SQL Database<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-10271 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02.png\" alt=\"\" width=\"676\" height=\"255\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02.png 851w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-300x113.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-768x290.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-700x264.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-410x155.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-100x38.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-275x104.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/QueryStore_04_02-20x8.png 20w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Al\u00e9m das configura\u00e7\u00f5es de reten\u00e7\u00e3o do Query Store, seguem outras melhores pr\u00e1ticas ao habilita-lo:<\/p>\n<h6><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssms\/download-sql-server-management-studio-ssms?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">Utilize a vers\u00e3o mais recente do Management Studio<\/a><\/h6>\n<p>Com uma vers\u00e3o antiga do SSMS pode n\u00e3o visualizar todos os gr\u00e1ficos que foram desenvolvidos para a utiliza\u00e7\u00e3o do Query Store.<\/p>\n<p>Ent\u00e3o instale a mais recente para usar #ficaadica<\/p>\n<h6>Atualize o seu SQL Server para a \u00faltima vers\u00e3o<\/h6>\n<p>Conforme mostrei nesse post, j\u00e1 tivemos alguns problemas identificados e corrigidos para o Query Store:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/02\/13\/query-store-3-lock-grande-ao-tentar-limpar-o-query-store\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.fabriciolima.net\/blog\/2019\/02\/13\/query-store-3-lock-grande-ao-tentar-limpar-o-query-store\/<\/a><\/li>\n<\/ul>\n<p>Logo, se habilitar o Query Store em uma vers\u00e3o do SQL que ainda tem bug, estar\u00e1 correndo um risco maior de ser impactado ao habilitar a feature.<\/p>\n<h6>Trace Flags 7745 e 7752<\/h6>\n<p>Se seu banco \u00e9 critico e o Query Store vai armazenar muita informa\u00e7\u00e3o, vale a pena habilitar os 2 Trace Flags abaixo.<\/p>\n<p>Esses 2 trace flags s\u00e3o suportados pela microsoft conforme pode ser verificado nesse <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/database-console-commands\/dbcc-traceon-trace-flags-transact-sql?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">link<\/a>.<\/p>\n<p><strong>O que eles fazem?<\/strong><\/p>\n<p><strong>Trace Flag 7745 &#8211;<\/strong> O Query Store por default faz um flush de informa\u00e7\u00f5es da mem\u00f3ria para o disco a cada 15 minutos. Caso voc\u00ea inicie uma opera\u00e7\u00e3o de shutdown no SQL Server, por default, ele vai esperar o Query Store salvar as informa\u00e7\u00f5es de mem\u00f3ria no disco antes de realizar o Shutdown. Isso pode atrasar o shutdown dependendo do ambiente.<\/p>\n<p>Imagina um failover do AlwaysOn ter que esperar o Query Store salvar as informa\u00e7\u00f5es no disco?<\/p>\n<p>Me ajuda ai SQL Server, n\u00e3o ligo de perder 15 minutos de informa\u00e7\u00f5es do Query Store. Pode jogar fora essa informa\u00e7\u00e3o.<\/p>\n<p>Habilitando o Trace Flag 7745, pulamos essa etapa de salvar os dados em disco antes de um Shutdown.<\/p>\n<p><strong>Trace Flag 7752 &#8211; <\/strong>Esse Trace Flag faz o trabalho inverso do outro.<\/p>\n<p>Quando o SQL Server inicia, ele carrega algumas informa\u00e7\u00f5es internas do Query Store na mem\u00f3ria. Em alguns casos isso pode demorar um pouco e as queries n\u00e3o conseguem ser executadas at\u00e9 a finaliza\u00e7\u00e3o desse processo.<\/p>\n<p>Para que o Query Store fa\u00e7a essa subida de informa\u00e7\u00f5es para a mem\u00f3ria de forma ass\u00edncrona, sem impactar na execu\u00e7\u00e3o das queries, temos que habilitar o Trace Flag 7752.<\/p>\n<p>Nesse tempo, o Query Store fica em Read Only, mas para mim isso n\u00e3o tem problema. Posso deixar de ter informa\u00e7\u00f5es no Query Store, o importante \u00e9 impactar o m\u00ednimo poss\u00edvel o ambiente.<\/p>\n<p>&nbsp;<\/p>\n<p>Espero que agora, com essas informa\u00e7\u00f5es, voc\u00ea possa habilitar o Query Store com mais seguran\u00e7a e impactando menos o ambiente.<\/p>\n<p>\u00c9 isso ai pessoal, at\u00e9 o pr\u00f3ximo post da s\u00e9rie sobre o Query Store.<\/p>\n<p>Algumas refer\u00eancias desse post:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/performance\/best-practice-with-the-query-store?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/performance\/best-practice-with-the-query-store?view=sql-server-2017<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/erin\/query-store-settings\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.sqlskills.com\/blogs\/erin\/query-store-settings\/<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/erin\/query-store-trace-flags\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.sqlskills.com\/blogs\/erin\/query-store-trace-flags\/<\/a><\/li>\n<\/ul>\n<p>Caso n\u00e3o tenha lido os posts anterioriores:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/02\/06\/query-store-01-introducao\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Query Store (#01) \u2013 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\" data-wpel-link=\"internal\">Query Store (#02) \u2013 Voc\u00ea est\u00e1 utilizando o Query Store do SQL Server em produ\u00e7\u00e3o?<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/02\/13\/query-store-3-lock-grande-ao-tentar-limpar-o-query-store\/\" target=\"_blank\" rel=\"noopener\">Query Store (#03) \u2013 Lock grande ao tentar limpar o Query Store<\/a><\/li>\n<\/ul>\n<p><b>Gostou da dica?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Siga-nos no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.linkedin.com\/company\/fabriciolimasolucoesembd\/\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\">Linkedin<\/a>,\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\">Youtube<\/a>,\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\">Facebook<\/a>\u00a0e\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 leitura 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, hoje vou dar algumas dicas para voc\u00ea que deseja habilitar o Query Store em produ\u00e7\u00e3o. Quando habilitamos o Query Store, ele vem com essas configura\u00e7\u00f5es por default: &nbsp; Vamos falar um pouco sobre essas 4 op\u00e7\u00f5es de reten\u00e7\u00e3o do query store destacadas acima. Max Size(MB) Essa [&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,1616,1512,33,280],"tags":[1691,1619,1429,1687,1688,1689,63,1258,1464,1362,1686,1690,1618,1463,40,953],"class_list":["post-10266","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-azure-sql-database","category-sql-azure","category-sql-server","category-virtual-pass-br","tag-alwaystuningyourdata","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-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\/10266","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=10266"}],"version-history":[{"count":11,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/10266\/revisions"}],"predecessor-version":[{"id":10339,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/10266\/revisions\/10339"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=10266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=10266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=10266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}