Tengo una tabla de puntaje alto para 100,000 jugadores que se está insertando 2 veces al día con un registro por jugador. Al final del día, la fragmentación del índice para los índices en esa tabla es del 99%. ¿Hay alguna manera de evitar esto ajustando la configuración?
CREATE TABLE HighScore(
[id] [int] IDENTITY(1,1) NOT NULL,
[user] [int] NULL,
[player] [int] NULL,
[round] [tinyint] NULL,
[group] [int] NULL,
[rank] [int] NULL,
[delta] [int] NULL,
[roundpoints] [int] NULL,
[totalpoints] [int] NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [HighScore_RoundGroup_Nidx] ON .[HighScore]
(
[round] ASC,
[group] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
GO
FILLFACTOR = 80
. Simplemente desperdiciará espacio. Todas las columnas tienen una longitud fija, por lo que una fila no puede expandirse en la actualización y las inserciones no pueden suceder en el medio de la tabla. El 99% parece inesperadamente alto para el otro índice también. ¿Cuántas páginas hay en cada índice?sys.dm_db_index_physical_stats
salida?Respuestas:
Creo que deberías probar
FILLFACTOR
configuraciones más altasHighScore_RoundGroup_Nidx
(por ejemplo, 50 o 40). Puede establecerFILLFACTOR
en 0 o 100 para elPRIMARY KEY
porque no debería fragmentarse. Si todavía lo hace,FILLFACTOR
no ayuda porque la razón es que las páginas recién asignadas se entrelazan con otras páginas recién asignadas. Este es un problema bien conocido de SQL Server. Puede mover este índice a su propio grupo de archivos que detendría este problema.fuente
Tal vez piense que está reconstruyendo, pero el índice no se reconstruye porque el índice no es lo suficientemente grande.
Eche un vistazo a esta pregunta ¿Por qué el índice REBUILD no reduce la fragmentación del índice?
¿Revisaste la fragmentación después de la reconstrucción? ¿Está realmente desfragmentado?
fuente