고객사에 데이터 저장 성능이 저하된 상황이 있었습니다.

해당 테이블을 확인해보니 인덱스 파편화가 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.

 

읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기