Mam tabelę najlepszych wyników dla 100 000 graczy, która jest wstawiana 2 razy dziennie z jednym rekordem na gracza. Na koniec dnia fragmentacja indeksów dla indeksów w tej tabeli wynosi 99%. Czy można temu zaradzić, modyfikując ustawienia?
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
tam potrzebna . To tylko zmarnuje miejsce. Wszystkie kolumny mają ustaloną długość, więc wiersz nie może rozwinąć się podczas aktualizacji, a wstawki nie mogą występować na środku tabeli. 99% wydaje się nieoczekiwanie wysokie również dla drugiego indeksu. Ile stron jest w każdym indeksie?sys.dm_db_index_physical_stats
wydajność?Odpowiedzi:
Myślę, że powinieneś wypróbować wyższe
FILLFACTOR
ustawieniaHighScore_RoundGroup_Nidx
(np. 50 lub 40). Możesz ustawićFILLFACTOR
na 0 lub 100,PRIMARY KEY
ponieważ nie powinno się fragmentować Jeśli nadal tak jest,FILLFACTOR
nie pomaga, ponieważ przyczyną jest to, że nowo przydzielone strony przeplatają się z innymi nowo przydzielonymi stronami. Jest to dobrze znany problem z programem SQL Server. Możesz przenieść ten indeks do własnej grupy plików, co zatrzymałoby ten problem.źródło
Może myślisz, że przebudowujesz, ale indeks się nie odbudowuje, ponieważ indeks nie jest wystarczająco duży.
Spójrz na to pytanie Dlaczego indeks REBUILD nie zmniejsza fragmentacji indeksu?
Czy sprawdziłeś fragmentację po przebudowie? Czy to jest faktycznie defragmentowane.
źródło