Saya memiliki tabel skor tertinggi untuk 100.000 pemain yang dimasukkan ke dalam 2 kali sehari dengan satu catatan per pemain. Pada akhirnya, indeks fragmentasi untuk indeks dalam tabel tersebut adalah 99%. Apakah ada cara untuk mencegah hal ini dengan mengubah pengaturan?
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
sana. Itu hanya akan membuang-buang ruang. Semua kolom adalah panjang tetap sehingga baris tidak dapat diperluas pada pembaruan dan sisipan tidak dapat terjadi di tengah tabel. 99% tampaknya terlalu tinggi untuk indeks lainnya. Berapa banyak halaman yang ada di setiap indeks?sys.dm_db_index_physical_stats
hasil Anda ?Jawaban:
Saya pikir Anda harus mencoba
FILLFACTOR
pengaturan yang lebih tinggiHighScore_RoundGroup_Nidx
(mis. 50 atau 40). Anda dapat mengaturFILLFACTOR
ke 0 atau 100 untukPRIMARY KEY
karena itu tidak boleh fragmen Jika masih,FILLFACTOR
tidak membantu karena alasannya adalah bahwa halaman yang baru dialokasikan interleave dengan halaman yang baru dialokasikan lainnya. Ini adalah masalah SQL Server yang terkenal. Anda bisa memindahkan indeks ini ke filegroup sendiri yang akan menghentikan masalah ini.sumber
Mungkin Anda berpikir Anda sedang membangun kembali tetapi indeks tidak bisa dibangun kembali karena indeksnya tidak cukup besar.
Lihat pertanyaan ini. Mengapa indeks REBUILD tidak mengurangi fragmentasi indeks?
Apakah Anda memeriksa fragmentasi setelah dibangun kembali? Apakah itu sebenarnya didefragmentasi.
sumber