DBAtlas · 데이터베이스 운영 아틀라스

인덱스 rebuild / reorganize

SQL Server유지보수

명령어

-- Rebuild (high fragmentation > 30%). ONLINE requires Enterprise:
ALTER INDEX IX_Customer_Email ON dbo.Customer
  REBUILD WITH (ONLINE = ON, MAXDOP = 4, SORT_IN_TEMPDB = ON);

-- All indexes of a table:
ALTER INDEX ALL ON dbo.Customer REBUILD WITH (FILLFACTOR = 90);

-- Reorganize (moderate fragmentation 5-30%, always online, can be stopped):
ALTER INDEX IX_Customer_Email ON dbo.Customer REORGANIZE;

하는 일

REBUILD는 인덱스를 처음부터 다시 만들고(단편화 완전 제거, 통계 갱신), REORGANIZE는 리프 수준을 제자리에서 압축한다(가볍고 비블로킹).

사용 시점

단편화 5-30%는 REORGANIZE, 30% 초과는 REBUILD. 큰 테이블은 유지보수 시간대에 수행한다.

주의

ONLINE = ON은 Enterprise/Developer에서만 사용할 수 있으며 Standard에서는 OFF를 사용한다(테이블이 잠김). REBUILD는 로그를 많이 생성하고 공간이 필요하다. MAXDOP와 SORT_IN_TEMPDB는 리소스 사용량에 영향을 준다.

DBAtlas에서 열기 →

관련 항목