고객사에 데이터 저장 성능이 저하된 상황이 있었습니다.
해당 테이블을 확인해보니 인덱스 파편화가 50%이상 적용되어 있었습니다.
1. 클러스터 인덱스 초기화 및 재생성
파편화가 생긴 원인 중 하나는 인덱스 구성이 효율적이지 않는 경우 발생할 수 있습니다.
테이블 데이터를 기반으로 효율적인 인덱스 구성인지 검토가 필요합니다.
인덱스 삭제 시 쿼리 성능 저하가 발생할 수 있어 빠르게 인덱스를 재생성하는 것이 중요하며,
추후 운영환경에 변화를 줄 수 있기 때문에 충분한 테스트가 필요합니다.
DROP INDEX [Index_Name] ON [Table_Name];
CREATE INDEX [Index_Name] ON [Table_Name]([Column_Name]);
2. REORGANIZE
- 인덱스의 기존 페이지를 재사용하여 파편화를 제거합니다.
- 통계 업데이트를 하지 않기 때문에 REBUILD보다 리소스를 덜 사용합니다.
- 운영 환경에서 바로 적용이 가능한 장점이 있으며 작업 중에도 데이터 변경 작업이 가능합니다.
ALTER INDEX [Index_Name] ON [Table_Name] REORGANIZE;
3. REBUILD (리빌드)
- 인덱스를 처음부터 다시 만들기 때문에 리소스를 많이 사용합니다.
- 통계 업데이트를 포함하여 리소스를 많이 사용하며, 큰 인덱스의 경우 실행 시간이 길어질 수 있습니다.
- 작업 중에는 해당 인덱스에 대한 데이터 변경 작업이 블록될 수 있습니다.
ALTER INDEX [Index_Name] ON [Table_Name] REBUILD;
저는 문제되는 테이블에 인덱스 REBUILD 를 적용하고 문제를 해결하였습니다.
DBA에게 자문을 구해 파편화 정도에 따른 작업 가이드를 공유합니다.
파편화가 5% 이하인 경우: 유지 보수 작업이 필요하지 않음
파편화가 5% ~ 30% 사이인 경우: REORGANIZE 사용
파편화가 30% 이상인 경우: REBUILD 사용
작업결과 공유
리빌드 전
DBCC SHOWCONTIG scanning 'TestTable' table...
Table: 'TestTable' (1378520390); index ID: 1, database ID: 29
TABLE level scan performed.
- Pages Scanned................................: 296
- Extents Scanned..............................: 49
- Extent Switches..............................: 204
- Avg. Pages per Extent........................: 6.0
- Scan Density [Best Count:Actual Count].......: 18.05% [37:205]
- Logical Scan Fragmentation ..................: 53.38%
- Extent Scan Fragmentation ...................: 83.67%
- Avg. Bytes Free per Page.....................: 4350.4
- Avg. Page Density (full).....................: 46.25%
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
리빌드 후
DBCC SHOWCONTIG scanning 'TestTable' table...
Table: 'TestTable' (1378520390); index ID: 1, database ID: 29
TABLE level scan performed.
- Pages Scanned................................: 139
- Extents Scanned..............................: 18
- Extent Switches..............................: 61
- Avg. Pages per Extent........................: 7.7
- Scan Density [Best Count:Actual Count].......: 29.03% [18:62]
- Logical Scan Fragmentation ..................: 0.00%
- Extent Scan Fragmentation ...................: 88.89%
- Avg. Bytes Free per Page.....................: 119.8
- Avg. Page Density (full).....................: 98.52%
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
읽어주셔서 감사합니다.
반응형
최근댓글