{"id":2431,"date":"2026-06-01T17:37:43","date_gmt":"2026-06-01T17:37:43","guid":{"rendered":"https:\/\/www.tiagoneves.net\/blog\/?p=2431"},"modified":"2026-06-01T17:37:45","modified_gmt":"2026-06-01T17:37:45","slug":"atualizacao-estatisticas-sql-server-vldb","status":"publish","type":"post","link":"https:\/\/www.tiagoneves.net\/blog\/atualizacao-estatisticas-sql-server-vldb\/","title":{"rendered":"Estat\u00edsticas SQL Server em VLDB: Por Que Atualizar Pode Ser Melhor Que Rebuild de \u00cdndices"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Recentemente fiz uma enquete no LinkedIn com uma pergunta simples para profissionais que trabalham com SQL Server em ambientes VLDB:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&#8220;Quando voc\u00ea tem uma janela de manuten\u00e7\u00e3o curta e precisa priorizar a\u00e7\u00f5es para melhorar a performance do ambiente, o que costuma trazer mais resultado?&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O resultado chamou bastante aten\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>85,7% votaram em Atualiza\u00e7\u00e3o de Estat\u00edsticas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>14,3% votaram em Rebuild\/Reorganize<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso mostra uma mudan\u00e7a importante na maturidade das opera\u00e7\u00f5es de banco de dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante muitos anos, rebuild de \u00edndice tornou-se praticamente uma &#8220;<em>receita padr\u00e3o<\/em>&#8221; para qualquer problema de performance. Em muitos ambientes, jobs de manuten\u00e7\u00e3o executam rebuild automaticamente sem sequer avaliar se aquele \u00edndice realmente precisa da opera\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas em ambientes VLDB (Very Large Databases), essa estrat\u00e9gia nem sempre \u00e9 a mais eficiente e muitas vezes o verdadeiro problema est\u00e1 nas estat\u00edsticas desatualizadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O ponto central \u00e9 simples:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">O SQL Server toma decis\u00f5es baseado em estimativas.<\/mark><\/em><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E essas estimativas v\u00eam das estat\u00edsticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>O que realmente impacta o plano de execu\u00e7\u00e3o?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Query Optimizer utiliza estat\u00edsticas para estimar:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>cardinalidade;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li> seletividade;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>distribui\u00e7\u00e3o dos dados;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>quantidade de linhas esperadas;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>custo dos operadores.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Se essas informa\u00e7\u00f5es estiverem incorretas, o optimizer pode:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>escolher Nested Loop ao inv\u00e9s de Hash Join;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>utilizar Index Scan quando deveria fazer Seek;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>gerar spills em tempdb;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>errar paralelismo;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>consumir mem\u00f3ria de forma inadequada;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>criar memory grants incorretos.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ou seja:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mesmo com \u00edndices &#8220;perfeitos&#8221;, estat\u00edsticas ruins continuam gerando planos ruins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pr\u00f3pria Microsoft destaca que as estat\u00edsticas s\u00e3o fundamentais para estimativa de cardinalidade e gera\u00e7\u00e3o de planos eficientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O optimizer n\u00e3o l\u00ea a tabela inteira para decidir um plano, ele utiliza histogramas e density armazenados nas estat\u00edsticas para prever quantas linhas ser\u00e3o retornadas em cada etapa do plano.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>E aqui est\u00e1 o grande problema:<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando a distribui\u00e7\u00e3o dos dados muda e as estat\u00edsticas n\u00e3o acompanham essa mudan\u00e7a, come\u00e7am os problemas cl\u00e1ssicos:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>estimativa de 1000 linhas retornando 10 milh\u00f5es;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>operadores inadequados;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>planos regressivos;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>paralelismo incorreto;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>consumo excessivo de mem\u00f3ria;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>degrada\u00e7\u00e3o generalizada de queries.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Em VLDB isso se torna ainda mais cr\u00edtico porque pequenos erros de estimativa viram desastres de performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">O mito do REBUILD como solu\u00e7\u00e3o universal<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muitos DBAs executam rebuild esperando ganho de performance, mas esquecem que o rebuild melhora principalmente:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>fragmenta\u00e7\u00e3o l\u00f3gica;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>organiza\u00e7\u00e3o f\u00edsica das p\u00e1ginas;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>densidade das p\u00e1ginas.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Isso ajuda principalmente workloads com alto volume de leitura sequencial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por\u00e9m, em muitos casos de degrada\u00e7\u00e3o de performance o problema n\u00e3o \u00e9 o acesso f\u00edsico aos dados, sim no optimizer que est\u00e1 tomando decis\u00f5es ruins. E isso normalmente est\u00e1 ligado \u00e0s estat\u00edsticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00e1tica, um \u00edndice extremamente fragmentado ainda pode produzir um plano excelente se o otimizador tiver boas estimativas. Por outro lado, um \u00edndice perfeitamente organizado pode continuar degradando a performance se as estat\u00edsticas estiverem desatualizadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse \u00e9 o ponto que muitos ambientes come\u00e7am a perceber quando crescem para m\u00faltiplos terabytes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Um detalhe importante sobre rebuild e estat\u00edsticas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vale destacar: o rebuild de \u00edndice <em>*atualiza*<\/em> as estat\u00edsticas daquele \u00edndice como efeito colateral o que pode dar a falsa impress\u00e3o de estar resolvendo ambos os problemas simultaneamente, mas ele n\u00e3o atualiza estat\u00edsticas de colunas sem \u00edndice, nem de \u00edndices que ficaram fora da janela de manuten\u00e7\u00e3o. Em VLDB, usar rebuild como substituto de uma pol\u00edtica de atualiza\u00e7\u00e3o de estat\u00edsticas \u00e9 uma troca desvantajosa na maioria dos cen\u00e1rios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">O custo operacional do rebuild em VLDB<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em bancos pequenos, rebuild pode parecer inofensivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas em VLDB o cen\u00e1rio muda completamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um rebuild pode gerar:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>enorme volume de transaction log;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>crescimento excessivo do arquivo de log;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>press\u00e3o de IO;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aumento elevado de CPU;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>consumo intenso de tempdb;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bloqueios;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>impacto em replicas Always On;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>maior tempo de backup de log;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>longas janelas de manuten\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m disso, rebuild de \u00edndices grandes pode levar horas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enquanto isso o <em>UPDATE STATISTICS <\/em>direcionado frequentemente entrega melhora percept\u00edvel em minutos e com um custo operacional muito menor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em muitos casos, atualizar estat\u00edsticas de tabelas cr\u00edticas gera impacto positivo imediato no Query Optimizer sem necessidade de reconstruir \u00edndices enormes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">O Cardinality Estimator e sua depend\u00eancia das estat\u00edsticas<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Cardinality Estimator (CE) \u00e9 um dos componentes mais importantes do SQL Server. Ele \u00e9 respons\u00e1vel por prever quantas linhas ser\u00e3o retornadas em cada operador do plano de execu\u00e7\u00e3o \u2014 e toda a tomada de decis\u00e3o do optimizer depende dessas estimativas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando as estat\u00edsticas est\u00e3o desatualizadas, o CE passa a interpretar o ambiente de forma incorreta. Isso afeta diretamente:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>escolha dos joins;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uso de paralelismo;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>quantidade de mem\u00f3ria reservada;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ordem de acesso \u00e0s tabelas;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>custo estimado das opera\u00e7\u00f5es.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Em outras palavras:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estat\u00edsticas ruins fazem o optimizer tomar decis\u00f5es ruins. E um optimizer tomando decis\u00f5es ruins degrada a performance muito antes da fragmenta\u00e7\u00e3o tornar-se um problema real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">O ponto mais importante: atualiza\u00e7\u00e3o autom\u00e1tica nem sempre \u00e9 suficiente<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muita gente acredita que o <em>AUTO_UPDATE_STATISTICS<\/em> resolve tudo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em VLDB isso raramente \u00e9 verdade e entender o motivo \u00e9 fundamental.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O threshold cl\u00e1ssico exige que aproximadamente <strong>20% das linhas sejam modificadas<\/strong> para disparar a atualiza\u00e7\u00e3o autom\u00e1tica. Em uma tabela com 500 milh\u00f5es de registros, isso significa que 100 milh\u00f5es de modifica\u00e7\u00f5es teriam que ocorrer para disparar o gatilho. Em tabelas que recebem cargas pesadas por\u00e9m concentradas como parti\u00e7\u00f5es hist\u00f3ricas ou tabelas de staging esse threshold pode nunca ser atingido, mesmo com dados completamente defasados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A partir do SQL Server 2016 (e do 2014 com a trace flag 2371), o <strong>dynamic auto-update threshold<\/strong> melhora esse comportamento ao usar uma escala sub-linear baseada em <em>sqrt(1000 * table_rows)<\/em>. Mesmo assim, em VLDB com alto volume de dados, o threshold din\u00e2mico ainda pode ser insuficiente para garantir estat\u00edsticas atualizadas nas tabelas mais cr\u00edticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por isso, ambientes cr\u00edticos normalmente precisam de:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<ul class=\"wp-block-list\">\n<li>manuten\u00e7\u00e3o customizada;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>atualiza\u00e7\u00e3o seletiva;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>prioriza\u00e7\u00e3o baseada em `modification_counter`;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>an\u00e1lise de workload;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>FULLSCAN em objetos estrat\u00e9gicos;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>monitoramento cont\u00ednuo das estat\u00edsticas mais sens\u00edveis.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A DMV abaixo \u00e9 extremamente \u00fatil para identificar estat\u00edsticas potencialmente desatualizadas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    OBJECT_NAME(s.object_id) AS tabela,\n    s.name AS estatistica,\n    sp.last_updated,\n    sp.rows,\n    sp.modification_counter\nFROM sys.stats s\nCROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) sp\nWHERE sp.modification_counter &gt; 100000\nORDER BY sp.modification_counter DESC;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Essa DMV permite identificar quantas modifica\u00e7\u00f5es ocorreram desde a \u00faltima atualiza\u00e7\u00e3o das estat\u00edsticas, ajudando na prioriza\u00e7\u00e3o da manuten\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observa\u00e7\u00e3o: <\/strong>o valor 100000 \u00e9 um ponto de partida o ajuste deve ser feito conforme o throughput do seu ambiente. Em VLDB com alto volume de transa\u00e7\u00f5es, considere thresholds maiores e cruze o <em>modification_counter<\/em> com <em>last_updated<\/em> para priorizar estat\u00edsticas que s\u00e3o simultaneamente antigas e muito modificadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Ent\u00e3o rebuild n\u00e3o \u00e9 importante?<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claro que \u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rebuild continua sendo extremamente importante em diversos cen\u00e1rios, principalmente quando existe degrada\u00e7\u00e3o f\u00edsica relevante nos \u00edndices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas o mercado est\u00e1 percebendo algo importante:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em muitos ambientes VLDB, estat\u00edsticas impactam mais a qualidade do plano de execu\u00e7\u00e3o do que fragmenta\u00e7\u00e3o impacta a leitura f\u00edsica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rebuild deve ser tratado como uma a\u00e7\u00e3o cir\u00fargica e n\u00e3o como rotina universal para qualquer problema de performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00e1tica:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00cdndices ajudam o acesso aos dados.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Estat\u00edsticas ajudam o optimizer a escolher o caminho correto.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">E em ambientes VLDB, escolher corretamente normalmente vale muito mais do que simplesmente reorganizar p\u00e1ginas.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?ssl=1\" rel=\"lightbox[2431]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"678\" height=\"1017\" data-id=\"2433\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=678%2C1017&#038;ssl=1\" alt=\"\" class=\"wp-image-2433\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=683%2C1024&amp;ssl=1 683w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=200%2C300&amp;ssl=1 200w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=768%2C1152&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?w=1024&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Refer\u00eancias<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Excelente artigo do Pedro Galv\u00e3o abordando estat\u00edsticas e utiliza\u00e7\u00e3o de <em>sys.stats<\/em> e <em>sys.dm_db_stats_properties<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-junior-galv-o-mvp-data-platform wp-block-embed-junior-galv-o-mvp-data-platform\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"5IoQldxdLm\"><a href=\"https:\/\/pedrogalvaojunior.wordpress.com\/2026\/05\/17\/a-importancia-das-estatisticas-para-o-otimizador-do-sql-server-trabalhando-com-sys-stats-e-sys-dm_db_stats_properties\/\" target=\"_blank\" rel=\"noopener\">A Import\u00e2ncia das Estat\u00edsticas para o Otimizador do SQL Server: Trabalhando com sys.stats e sys.dm_db_stats_properties<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u201cA Import\u00e2ncia das Estat\u00edsticas para o Otimizador do SQL Server: Trabalhando com sys.stats e sys.dm_db_stats_properties\u201d \u2014 Junior Galv\u00e3o - MVP - Data Platform\" src=\"https:\/\/pedrogalvaojunior.wordpress.com\/2026\/05\/17\/a-importancia-das-estatisticas-para-o-otimizador-do-sql-server-trabalhando-com-sys-stats-e-sys-dm_db_stats_properties\/embed\/#?secret=HTWZY8swFx#?secret=5IoQldxdLm\" data-secret=\"5IoQldxdLm\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Documenta\u00e7\u00e3o Microsoft: sys.dm_db_stats_properties<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/learn.microsoft.com\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-db-stats-properties-transact-sql\" target=\"_blank\" rel=\"noopener\">https:\/\/learn.microsoft.com\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-db-stats-properties-transact-sql<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubra por que a atualiza\u00e7\u00e3o de estat\u00edsticas SQL Server pode gerar mais performance que rebuild de \u00edndices em ambientes VLDB e janelas curtas de manuten\u00e7\u00e3o.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_91251433_91251433":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Descubra por que a atualiza\u00e7\u00e3o de estat\u00edsticas SQL Server pode ser mais importante do que rebuild de \u00edndices em ambientes VLDB. Entenda o impacto das estat\u00edsticas no Query Optimizer, no Cardinality Estimator e na performance das consultas.","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_wpscppro_dont_share_socialmedia":false,"_wpscppro_custom_social_share_image":0,"_facebook_share_type":"default","_twitter_share_type":"default","_linkedin_share_type":"default","_pinterest_share_type":"default","_linkedin_share_type_page":"","_instagram_share_type":"default","_medium_share_type":"default","_threads_share_type":"default","_google_business_share_type":"default","_selected_social_profile":[],"_wpsp_enable_custom_social_template":false,"_wpsp_social_scheduling":{"enabled":false,"datetime":null,"platforms":[],"status":"template_only","dateOption":"today","timeOption":"now","customDays":"","customHours":"","customDate":"","customTime":"","schedulingType":"absolute"},"_wpsp_active_default_template":true},"categories":[239,2,26,20],"tags":[657,660,669,54,658,110,667,661,662],"class_list":["post-2431","post","type-post","status-publish","format-standard","hentry","category-tuning","category-casos-do-dia-a-dia","category-sqlserver-2016","category-sqlserver-geral","tag-cardinality-estimator","tag-database-administration","tag-index-maintenance","tag-performance","tag-query-optimizer","tag-sql-server-performance","tag-statistics","tag-update-statistics","tag-vldb"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6eIyh-Dd","jetpack-related-posts":[{"id":1495,"url":"https:\/\/www.tiagoneves.net\/blog\/dicas-de-como-realizar-um-tuning-no-sql-server\/","url_meta":{"origin":2431,"position":0},"title":"Dicas de como realizar um tuning no SQL Server","author":"tiagoneves","date":"9 de maio de 2019","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje, eu quero compartilhar com voc\u00eas algumas dicas de como iniciar um tuning em alguma rotina, seja stored procedure, function ou query adhoc. Quando vamos iniciar um trabalho de tuning, uma das primeiras informa\u00e7\u00f5es que precisamos \u00e9 visualizar o plano de execu\u00e7\u00e3o da\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/05\/word-image-3-1.png?fit=352%2C278&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":293,"url":"https:\/\/www.tiagoneves.net\/blog\/free-ebooks-sobre-sql-server\/","url_meta":{"origin":2431,"position":1},"title":"Free ebooks sobre SQL Server","author":"tiagoneves","date":"30 de setembro de 2015","format":false,"excerpt":"Ol\u00e1 pessoal, tudo certo? Neste post vou compartilhar com voc\u00ea uma lista de links de ebooks para estudo de SQL Server, essa lista eu vi no blog do meu amigo e ex-chefe Fabricio Lima e resolvi popular aqui tamb\u00e9m. Vou tentar sempre manter essa lista atualizada, para isso tamb\u00e9m conto\u2026","rel":"","context":"Em &quot;Ebooks&quot;","block_context":{"text":"Ebooks","link":"https:\/\/www.tiagoneves.net\/blog\/category\/ebooks\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2414,"url":"https:\/\/www.tiagoneves.net\/blog\/sql-server-2016-esta-chegando-ao-fim-do-suporte-o-que-isso-significa-na-pratica\/","url_meta":{"origin":2431,"position":2},"title":"SQL Server 2016 est\u00e1 chegando ao fim do suporte: o que isso significa na pr\u00e1tica?","author":"tiagoneves","date":"27 de abril de 2026","format":false,"excerpt":"O SQL Server 2016 ter\u00e1 seu suporte estendido encerrado em 14 de julho de 2026, o que resultar\u00e1 na falta de atualiza\u00e7\u00f5es de seguran\u00e7a e suporte. Continuar usando essa vers\u00e3o traz riscos como vulnerabilidades e n\u00e3o conformidade regulat\u00f3ria. Planejar a migra\u00e7\u00e3o para vers\u00f5es mais recentes ou cloud deve ser prioridade\u2026","rel":"","context":"Em &quot;Seguran\u00e7a&quot;","block_context":{"text":"Seguran\u00e7a","link":"https:\/\/www.tiagoneves.net\/blog\/category\/seguranca\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2216,"url":"https:\/\/www.tiagoneves.net\/blog\/como-tirei-a-certificacao-mcse-data-management-and-analytics\/","url_meta":{"origin":2431,"position":3},"title":"Como tirei a certifica\u00e7\u00e3o MCSE &#8211; Data Management and Analytics","author":"tiagoneves","date":"18 de setembro de 2019","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje eu vou comentar um pouco sobre provas de certifica\u00e7\u00e3o, especialmente sobre as provas 70-764, 70-765 e 70-465. Quem me acompanha nas redes sociais (LinkedIn \/ Twitter \/ Facebook) viu que nas \u00faltimas semanas eu recebi o t\u00edtulo de MCSE (Microsoft Certified Solutions\u2026","rel":"","context":"Em &quot;Certifica\u00e7\u00e3o&quot;","block_context":{"text":"Certifica\u00e7\u00e3o","link":"https:\/\/www.tiagoneves.net\/blog\/category\/certificacao\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2234,"url":"https:\/\/www.tiagoneves.net\/blog\/dicas-do-dia-a-dia-melhorando-a-performance-reduzindo-os-waits-do-t-log\/","url_meta":{"origin":2431,"position":4},"title":"Dicas do dia a dia &#8211; Melhorando a performance reduzindo os waits do T-Log","author":"tiagoneves","date":"8 de outubro de 2019","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje quero compartilhar com voc\u00eas uma situa\u00e7\u00e3o que \u00e9 bastante comum no meu dia a dia de Consultor de Banco de Dados SQL Server. Estava realizando uma atividade de tuning em um cliente e percebi que quando executava algo que escrevia no log\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/10\/T-Log-take-care-014.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/10\/T-Log-take-care-014.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/10\/T-Log-take-care-014.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/10\/T-Log-take-care-014.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":468,"url":"https:\/\/www.tiagoneves.net\/blog\/atualizando-o-windows-server-de-um-cluster-sql-server\/","url_meta":{"origin":2431,"position":5},"title":"Atualizando o Windows Server de um Cluster SQL Server","author":"tiagoneves","date":"24 de fevereiro de 2016","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje vou comentar e demonstrar uma migra\u00e7\u00e3o de sistema operacional de um Cluster SQL Server que fiz essa semana. Cen\u00e1rio: Na empresa que trabalho tem um cluster SQL Server ativo\/passivo, nele tem 10 inst\u00e2ncias SQL Server 2008 R2 instaladas e os servidores eram\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"Windows_Cluster_Single_Node","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=1050%2C600 3x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/Windows_Cluster_Single_Node.png?resize=1400%2C800 4x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/2431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/comments?post=2431"}],"version-history":[{"count":4,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/2431\/revisions"}],"predecessor-version":[{"id":2437,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/2431\/revisions\/2437"}],"wp:attachment":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/media?parent=2431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/categories?post=2431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/tags?post=2431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}