나는 100.000 플레이어를위한 최고 점수 테이블을 가지고 있으며, 이는 플레이어 당 하나의 레코드로 하루에 2 번 삽입됩니다. 하루가 끝나면 해당 테이블의 인덱스에 대한 인덱스 조각화는 99 %입니다. 설정을 조정하여이를 방지 할 수있는 방법이 있습니까?
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
1
바보 같은 질문이지만 모든 기초를 다룰 수 있습니다-매일 재건 / 재구성하고 있습니까?
—
JHFB
TABLE DDL이 없으면 누구나 게시 할 것입니다. 기본 키로 GUID를 사용하고 있습니까?
—
SQL Learner
나는 지금 매일 재건하고 있지만 데이터가 어떻게 진화하는지에 대해 잘 예측할 수 있기 때문에 매일 이런 일이 발생하지 않도록 할 수 있는지 궁금합니다.
—
olle
조각화 수준을 어떻게 결정합니까? 클러스터형 인덱스에 대해서는 전혀 논리적 조각화가 예상되지 않습니다. 내부 조각화는 필요하지 않습니다
—
Martin Smith
FILLFACTOR = 80
. 공간을 낭비 할뿐입니다. 모든 열의 길이는 고정되어 있으므로 업데이트시 행을 확장 할 수 없으며 테이블 중간에 삽입을 수행 할 수 없습니다. 99 %는 다른 지수에서도 예상치 못하게 높은 것으로 보입니다. 각 색인에 몇 페이지가 있습니까?
매일 재건 한 후 99 %가 실제로 갈 것입니다.
—
Martin Smith
sys.dm_db_index_physical_stats
결과 를 보여 줄 수 있습니까?