Estamos solucionando um problema de longa duração com um fornecedor. Seu software tende a congelar e parar de funcionar uma ou duas vezes por semana, causando grandes interrupções em nossa operação. Eles não conseguiram determinar a causa, apesar de enviarmos muitos GBs de logs e backups do banco de dados. Ultimamente, eles começaram a sugerir que os problemas estão relacionados à nossa manutenção e talvez não ao seu software (apesar de não haver consultas demoradas, pressão na CPU / RAM / IO ou até mesmo conflitos quando os problemas ocorrem). Em particular, eles estão dizendo que nossos índices são um problema.
Sua ferramenta favorita a ser usada é o showcontig do DBCC, apesar de eu argumentar que a coisa foi preterida pelo MS. Eles ficam obcecados com a densidade da varredura e a extensão da fragmentação, principalmente. Para tirar a desculpa, instituí uma manutenção noturna agressiva que reconstrói índices com <90% de densidade de varredura ou> 10% de fragmentação. Isso os tirou do trem de densidade de varredura, mas eles permanecem fixos na fragmentação da extensão. O showcontig do DBCC mostra uma fragmentação de alta extensão, mesmo em um índice que foi reconstruído horas antes. Abaixo estão os resultados de dbcc_showcontig e sys.dm_db_index_physical_stats para uma tabela que eles apontaram como um "possível problema".
DBCC SHOWCONTIG
- Páginas digitalizadas ................................: 1222108
- Extensões verificadas ..............................: 152964
- Chaves de extensão ..............................: 180904
- Média Páginas por extensão ........................: 8.0
- Densidade de digitalização [Melhor contagem: contagem real] .......: 84,44% [152764: 180905]
- Fragmentação de Varredura Lógica ..................: 3,24%
- Fragmentação de Varredura Extendida ...................: 35.97%
- Média Bytes Grátis por Página .....................: 692.5
- Média Densidade da página (completa) .....................: 91.44%
sys.dm_db_index_physical_stats
index_type_desc alloc_unit_type_desc Avg_fragmentation_in_percent page_count
CLUSTERED INDEX IN_ROW_DATA 3.236803129 1222070
NONCLUSTERED INDEX IN_ROW_DATA 0.680074642 48230
NONCLUSTERED INDEX IN_ROW_DATA 0.093237195 48264
NONCLUSTERED INDEX IN_ROW_DATA 0.03315856 48253
NONCLUSTERED INDEX IN_ROW_DATA 0.194653248 48291
NONCLUSTERED INDEX IN_ROW_DATA 0.393480436 58961
NONCLUSTERED INDEX IN_ROW_DATA 0.23622292 64346
NONCLUSTERED INDEX IN_ROW_DATA 0.041445623 48256
NONCLUSTERED INDEX IN_ROW_DATA 0.701172007 59044
NONCLUSTERED INDEX IN_ROW_DATA 0.216397724 53605
Devo me preocupar com meus índices? O acima não é atípico. O MS DMV preferido parece mostrar que está bem, mas o fornecedor está preso nessa fragmentação de 35,97%. Eu suspeito que é só eles tentando desesperadamente encontrar algo para culpar seus problemas de software, mas se eu tiver um problema real, quero tentar corrigi-lo.