Se eu executar o seguinte:
SELECT dbschemas.[name] as 'Schema',
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc
Mostra o nível de fragmentação. Em seguida, executei o script de otimização de índice de Ola Hallengren, que obviamente reduz os índices.
Se eu executar a consulta novamente, ela agora mostra alta fragmentação em tabelas sem índice, por exemplo:
Schema Table Index alloc_unit_type_desc avg page_cont
dbo tablename NULL IN_ROW_DATA 99.4362934362934 8176
Devo me preocupar com isso?
Qualquer coisa que eu possa fazer?
Qualquer coisa que eu deveria estar fazendo?
Estamos enfrentando problemas de desempenho. Estou ciente de que 2008 não é o ideal e isso está sendo abordado.
O arquivo de dados também está sendo exibido como 220 GB, mas o espaço real usado é de 140 GB.
O script de otimização de índice de Ola Hallengren não executa a desfragmentação de heap.
Em outras palavras, as recompilações de tabela não estão acontecendo ao executar o procedimento e isso é esperado.
Você pode executar
ALTER TABLE dbo.tablename REBUILD;
para remover a fragmentação.Isso também reconstrói os índices não clusterizados no heap.
Melhor opção do que reconstruir suas tabelas de heap
Você precisa perguntar a si mesmo ou à equipe do aplicativo por que não pode adicionar um índice clusterizado à tabela. pois a reconstrução do heap usa muitos recursos e é uma solução temporária.
Se você adicionar um índice clusterizado, esse índice será incluído no script Index Optimize e a fragmentação será removida quando o script for executado.
Outra opção é adicionar o índice clusterizado e parar de se preocupar com a fragmentação do índice.
Pode ser que seja por causa dos registros encaminhados nas tabelas de heap, mas em 8167 páginas eu diria que isso não é provável. Um ponto de partida pode ser observar as consultas que estão sendo executadas em seu servidor.
O SP_BlitzCache pode ajudar a encontrar suas consultas com pior desempenho.
Isso não deve ser um problema. Além do espaço em disco, você não deve se preocupar muito. Você não está confiando no crescimento automático, o que é uma coisa boa.