Loading Now

A Mentira Sobre Fragmentação de Índices no SQL Server: O Problema Não Acabou com SSD

Durante muitos anos, fragmentação de índices era praticamente um pesadelo no SQL Server.

Quem trabalhou na época de discos HDD lembra perfeitamente disso.

Os discos mecânicos dependiam fortemente de leitura sequencial.
Quando os índices ficavam fragmentados, o braço mecânico do disco precisava “saltar” entre páginas espalhadas fisicamente.

Resultado:

  • random I/O alto
  • scans lentos
  • throughput destruído
  • queries sofrendo absurdamente

Naquela época, rebuild de índice realmente fazia muita diferença.

Só que o cenário mudou completamente.

Hoje temos:

  • SSD
  • NVMe
  • SANs modernas
  • dezenas ou centenas de GB em memória RAM
  • buffer pool gigantesco

E isso mudou radicalmente o impacto da fragmentação.


O que muita gente não percebeu

Muitos DBAs continuam usando a mesma estratégia de 15 anos atrás:

  • rebuild acima de 30%
  • reorganize acima de 5%
  • maintenance plans agressivos

Como se ainda estivéssemos em 2008.

Mas isso já não representa a realidade atual.

O próprio Brent Ozar já falou diversas vezes que fragmentação perdeu grande parte do impacto em SELECTs modernos. (Brent Ozar Unlimited®)

E tecnicamente ele está correto.

Com SSD e grandes quantidades de memória:

  • random I/O custa muito menos
  • read-ahead continua eficiente
  • scans fragmentados muitas vezes têm impacto mínimo

Em muitos casos, o gargalo deixou de ser disco há anos.


Então fragmentação não importa mais?

Importa.

Mas não do jeito que muita gente pensa.

Esse é o ponto que quase ninguém explica corretamente.

A discussão moderna sobre fragmentação não é mais sobre SEEK versus SCAN.

O problema moderno é:

  • page density
  • page splits
  • write amplification
  • buffer pool waste
  • manutenção de índices durante UPDATE e DELETE

E isso muda completamente a análise.


O ponto que quase ninguém comenta

Existe um detalhe extremamente importante que muitos vídeos simplificam demais:

Fragmentação ainda impacta muito workloads de escrita.

Principalmente:

  • UPDATE
  • DELETE
  • INSERT
  • operações OLTP intensivas

Porque fragmentação gera:

  • mais páginas
  • mais movimentação interna
  • mais page splits
  • mais manutenção de árvore B-Tree
  • mais escrita no transaction log
  • mais locks
  • mais latch contention

E isso continua extremamente relevante mesmo em SSD. (Microsoft Learn)


O verdadeiro problema moderno: Page Density

A própria Microsoft hoje enfatiza algo importante:
page density muitas vezes importa mais do que fragmentação lógica. (Microsoft Learn)

Quando páginas ficam vazias após:

  • DELETEs
  • UPDATEs
  • splits

o SQL Server precisa:

  • ler mais páginas
  • manter mais páginas em RAM
  • navegar em árvores maiores

Ou seja:
mesmo em memória RAM, índices inchados consomem mais recursos.

E isso impacta diretamente:

  • cache efficiency
  • CPU
  • memory pressure
  • throughput de escrita

Por que UPDATE e DELETE sofrem mais?

Porque operações de escrita precisam modificar a estrutura do índice.

Quando o índice está fragmentado:

  • existem mais páginas
  • menos densidade
  • mais movimentação entre páginas
  • mais divisão de páginas

Isso aumenta:

  • latch waits
  • PAGELATCH contention
  • geração de log
  • locking interno

E em ambientes OLTP isso vira um problema enorme.

Principalmente em:

  • ERPs
  • sistemas financeiros
  • filas
  • workloads transacionais pesados

O problema do REBUILD no SQL Server Standard

E aqui chegamos em outro ponto crítico.

No SQL Server Enterprise existe ONLINE INDEX REBUILD.

Mas no SQL Server Standard?

Não.

E isso muda tudo.

Porque um REBUILD offline pega SCH-M Lock.

Ou seja:
bloqueia leitura e escrita durante partes críticas da operação.

Em ambientes movimentados isso pode virar um caos:

  • filas travadas
  • blocking chain
  • timeout
  • aplicação congelando

Muita gente roda maintenance job de madrugada sem perceber o impacto.

E pior:
às vezes o rebuild está causando mais problema do que resolvendo.


O lado negativo que quase ninguém mede

Rebuild também:

  • explode transaction log
  • invalida planos
  • atualiza estatísticas
  • gera recompilações
  • aumenta CPU
  • aumenta I/O

E muitas vezes o ganho percebido nem veio da fragmentação.

Veio da atualização de estatísticas. (Reddit)

Isso é extremamente importante.

Muitos ambientes “melhoram” após rebuild simplesmente porque:

  • o plano ruim saiu do cache
  • estatísticas foram atualizadas
  • ocorreu recompilação

Não porque a fragmentação era realmente o problema.


O Brent Ozar está errado?

Não.

Mas a discussão normalmente fica incompleta.

Quando Brent fala que fragmentação pouco impacta SELECT em SSD moderno, ele está absolutamente correto. (Brent Ozar Unlimited®)

O problema é que muita gente interpreta isso como:
“fragmentação não importa mais”.

E isso é falso.

Ela ainda importa muito para:

  • escrita
  • manutenção de páginas
  • densidade
  • concorrência
  • pressão de memória
  • operações OLTP

O maior erro dos DBAs modernos

O erro hoje não é deixar índice fragmentar.

O erro é:
reindexar sem necessidade.

Porque rebuild excessivo:

  • gera lock
  • gera blocking
  • gera log gigantesco
  • aumenta CPU
  • invalida cache
  • cria manutenção desnecessária

E muitas vezes resolve um problema que nem existia.


O que realmente faz sentido hoje

A abordagem moderna precisa ser muito mais inteligente.

Em vez de olhar apenas:

  • avg_fragmentation_in_percent

precisa analisar:

  • page density
  • workload de escrita
  • latch contention
  • uso de memória
  • scans reais
  • impacto em waits
  • tamanho do índice
  • frequência de UPDATE/DELETE

Porque hoje o problema já não é mais simplesmente “página fora de ordem no disco”.

O SQL Server moderno é muito mais complexo do que isso.


Conclusão

Fragmentação mudou de significado.

Na época dos HDDs:
o problema principal era leitura física aleatória.

Hoje:
o problema principal é eficiência estrutural do índice.

SELECTs muitas vezes quase não sofrem mais.

Mas UPDATEs, DELETEs e workloads OLTP continuam sendo altamente impactados por:

  • baixa densidade
  • page splits
  • excesso de páginas
  • manutenção interna da B-Tree

E no SQL Server Standard o problema fica ainda pior por causa do rebuild offline e dos locks gerados.

Então a pergunta moderna não é:
“meu índice está fragmentado?”

A pergunta correta é:

“essa fragmentação realmente está causando impacto no meu workload?”


Quer entrar na carreira de dados ou desenvolver suas capacidades como DBA, Analista de Dados, Analista de Infra ou DEV?

Segue as minhas principais formações:

  • Coloque comentário que gostaria de ter acesso aos cursos com desconto.
  1. AcademiaDBA. Formação Completa para DBA.
    Aprenda SQL Server, Oracle, PostgreSQL, MySQL, Data Warehouse, ETL com SSIS/SSAS e Power BI em uma plataforma prática e focada na carreira, criada para ajudar você a se tornar um profissional confiante em banco de dados e dados.
    1316 aulas e 412 horas de conteúdo original
    Legendas: Portugues
    https://formacaodba.academiadba.com/

1.1 DBAcademy. Master Databases.Build a Real Data Career.
Learn SQL Server, Oracle, PostgreSQL, MySQL, Data Warehousing, ETL with SSIS/SSAS, and Power BI in one practical, career-focused platform designed to help you become a confident database and data professional.
1316 class e 412 hours
Subtitles: English, Spain, France
https://dbacademy.academiadba.com/

  1. Mastering SQL Server – 86 horas: torne-se um DBA SQL Server
    Curso Completo de DBA SQL Server: Aprenda do Zero, na Prática, com Azure, Performance, Segurança e Alta Disponibilidade.
    https://www.udemy.com/course/servino_sqlserver/

2.1 Dominando scripts PowerShell para o SQL Server
Do básico ao avançado: aprenda PowerShell passo a passo e transforme sua rotina de DBA com automações inteligentes.
https://www.udemy.com/course/dbapowershell/

2.2 Toolkit do DBA SQL Server
Monitoramento com DBADASH, Stress Test com SQLQUERYSTRESS, DBATools e Scripts Essenciais para o DBA SQL Server
https://www.udemy.com/course/toolkitdbasqlserver/

2.3 SQL Server DBA Toolkit
Monitoring with DBADASH, Stress Testing with SQLQUERYSTRESS, DBATools, and Essential Scripts for the SQL Server DBA. In English
https://www.udemy.com/course/sql-server-dba-toolkit/

2.4 Cluster-AG Always ON e Log Shipping no SQL SERVER 2025
Aprenda a configurar ambiente de disaster recovery no SQL Server usando o Cluster com AG Always on e Log Shipping
https://www.udemy.com/course/logshippingsqlserver/

  1. Curso Postgres Completo, 50 horas – Formação DBA
    Aprenda Banco de Dados Postgres, Modelagem de Dados e programação usando SQL – do básico ao avançado
    https://www.udemy.com/course/postgrescompleto/

3.1 Cluster Postgres: Domine Clusters Gerenciado pelo Patroni
Aprenda a montar um cluster PostgreSQL robusto no Linux utilizando Patroni, ETCD, HAProxy e Keepalived
https://www.udemy.com/course/clusterpostgres/

3.2 Postgres Cluster: Master Patroni-Managed Clusters
Learn how to build a robust PostgreSQL cluster on Linux using Patroni, ETCD, HAProxy and Keepalived. In English
https://www.udemy.com/course/postgres-cluster/

  1. Curso ORACLE Completo – 89 horas, formação DBA
    Aprenda Banco de Dados Oracle, Modelagem de Dados e programação usando PL/SQL – do básico ao avançado
    https://www.udemy.com/course/dbaoracle/
  2. Curso MySQL Completo – 123 horas, formação DBA
    Aprenda MySQL, SQL, Azure MySQL, Modelagem de Dados, Windows Server e Linux Ubuntu Server – do básico ao avançado
    https://www.udemy.com/course/mysqlcompleto/

5.1 MySQL Course – 75 Hours, Become a DBA
MySQL Course – 75 hours, DBA training. Learn MySQL / SQL Language – From Basic to Advanced. In English
https://www.udemy.com/course/mysqlcourse/

  1. Curso Analista de Dados, formação profissional – 52 horas
    Aprenda SQL Server, modelagem de dados, Linguagem SQL, SSIS, SSAS, data Warehouse, Stage, Power BI
    https://www.udemy.com/course/analistadados/
  2. Curso PowerBI – Formação Analista de BI – 28 horas
    PowerBI, Linguagem SQL e Modelagem de Dados, do básico ao avançado. Se torne um Analista de BI – Business Intelligence
    https://www.udemy.com/course/curso-powerbi-completo/
  3. Guia Completo para a Carreira de DBA
    Como conquistar sua primeira vaga como DBA — mesmo começando do zero e evoluir até pleno ou criar seu próprio negócio
    https://www.udemy.com/course/guiacarreiradba/
  4. Analista de Dados: Da Primeira Vaga ao Negócio Próprio
    Aprenda a se posicionar, conseguir entrevistas, passar em processos seletivos, trabalhar bem nos primeiros 90 dias
    https://www.udemy.com/course/guianalistadados/

Bons Estudos
Prof. Msc Sandro Servino
www.academiadba.com

Share this content:

Sandro Servino is a senior IT professional with over 30 years of experience in technology, having worked as a Developer, Project Manager (acting as a Requirements Analyst and Scrum Master), Professor, IT Infrastructure Team Coordinator, IT Manager, and Database Administrator. He has been working with Database technologies since 1996 and has been vendor-certified since the early years of his career. Throughout his professional journey, he has combined deep technical expertise with leadership, education, and consulting experience in mission-critical environments. Sandro has trained more than 20,000 students in database technologies, helping professionals build strong foundations and advance their careers in data platforms and database administration. He has delivered corporate training programs for multiple companies and served as a university professor teaching Database and Data Administration for over five years. For many years, he worked as an independent consultant specializing in SQL Server, providing strategic and technical support for complex database environments. He has extensive experience in troubleshooting and resolving critical issues in SQL Server production environments, including performance tuning, high availability, disaster recovery, security, and infrastructure optimization. His academic background includes: Postgraduate Degree in School Education MBA in IT Governance Master’s Degree in Knowledge Management and Information Technology Currently, Sandro works as a Database Administrator for multinational companies in Europe, managing enterprise-level SQL Server environments and supporting large-scale, high-demand infrastructures. Areas of Expertise SQL Server (Administration, Performance, HA/DR, Troubleshooting) Azure SQL Databases MySQL Oracle PostgreSQL Power BI Data Analytics Data Warehouse Windows Server Oracle Linux Server Ubuntu Linux Server DBA Training and Mentorship Business Continuity and Disaster Recovery Strategies Courses and Training Programs Sandro delivers professional training programs focused on the formation of DBAs and Data/BI Analysts, covering: SQL Server and Azure SQL Databases MySQL Oracle PostgreSQL Power BI Data Analytics Data Warehouse Windows Server Oracle Linux Server Ubuntu Linux Server With a unique combination of technical depth, academic knowledge, real-world consulting experience, and international exposure, Sandro Servino brings practical, results-driven expertise to database professionals and organizations seeking reliability, performance, and resilience in their data platforms.

Post Comment