DAP 자격증 공부
[DAP자격증]5과목 - 클러스터링 팩터와 클러스터링 인덱스
IronAreum
2025. 3. 2. 21:44
728x90
클러스터링 팩터(Clustering Factor)와 클러스터링 인덱스(Clustering Index)
데이터베이스에서 **클러스터링 팩터(Clustering Factor)**와 **클러스터링 인덱스(Clustering Index)**는 인덱스와 데이터 저장 방식과 관련된 개념입니다. 둘은 서로 연관되어 있지만, 개념적으로 구별해야 합니다.
728x90
1. 클러스터링 팩터(Clustering Factor)
클러스터링 팩터는 인덱스된 컬럼의 정렬 상태가 데이터 파일(테이블의 실제 데이터)과 얼마나 일치하는지를 나타내는 값입니다.
이 값은 **클러스터링 인덱스가 아닌 일반 인덱스(비클러스터링 인덱스)**에서도 중요한 성능 지표입니다.
1.1 클러스터링 팩터의 개념
- 클러스터링 팩터 값이 낮다
→ 데이터가 인덱스 순서와 비슷하게 정렬되어 있음.
→ 인덱스를 따라 데이터를 조회할 때 연속적인 블록(디스크 페이지)에 접근하므로 I/O가 줄어들어 성능이 좋음. - 클러스터링 팩터 값이 높다
→ 데이터가 인덱스 순서와 다르게 흩어져 있음.
→ 인덱스를 따라 검색할 때 여러 블록을 탐색해야 하므로 성능이 저하됨.
1.2 클러스터링 팩터 계산 방식
DBMS마다 다르지만, 일반적으로 다음과 같은 방식으로 계산됩니다.
- 인덱스된 키 값을 기준으로 정렬했을 때, 연속된 블록에서 레코드가 저장된 횟수를 측정합니다.
- 테이블의 총 블록 수와 비교하여 상대적인 클러스터링 정도를 계산합니다.
예제:
테이블이 1,000개의 블록으로 이루어져 있고, 인덱스를 따라 읽을 때 200번 블록 변경이 발생한다면 클러스터링 팩터는 200입니다.
반면, 정렬이 전혀 되어 있지 않아 1,000번 블록 변경이 발생하면 클러스터링 팩터는 1,000이 됩니다.
2. 클러스터링 인덱스(Clustering Index)
클러스터링 인덱스는 테이블의 데이터가 인덱스 순서대로 물리적으로 저장되는 방식의 인덱스를 의미합니다.
즉, 테이블이 인덱스 컬럼의 순서대로 정렬되는 특징이 있습니다.
2.1 클러스터링 인덱스의 특징
- 테이블의 물리적 정렬이 인덱스 키를 기준으로 유지됨
- 예를 들어, ID 컬럼을 클러스터링 인덱스로 설정하면, 데이터 파일 자체가 ID 값 기준으로 정렬됨.
- 각 테이블에 하나의 클러스터링 인덱스만 존재 가능
- 테이블이 특정 기준으로 정렬되므로, 두 개 이상의 기준으로 동시에 정렬할 수 없음.
- 데이터 검색 성능이 뛰어남
- 범위 검색(BETWEEN, >, <)에서 성능이 특히 우수.
- 같은 블록에서 연속적으로 데이터를 읽을 수 있어 I/O 비용이 절감됨.
- 데이터 삽입/삭제 시 성능 영향
- 새로운 데이터를 삽입할 때, 기존 정렬을 유지해야 하므로 INSERT 시 재정렬(페이지 분할)이 발생할 수 있음.
- DELETE 후에도 빈 공간이 남아있는 경우가 있음.
2.2 클러스터링 인덱스와 비클러스터링 인덱스 비교
구분클러스터링 인덱스비클러스터링 인덱스
데이터 저장 방식 | 인덱스 순서대로 물리적 정렬 | 별도의 인덱스 구조에서 데이터 위치를 참조 |
테이블당 개수 | 1개만 가능 | 여러 개 가능 |
데이터 접근 방식 | 인덱스를 따라 바로 조회 | 인덱스에서 데이터 위치를 찾아 한 번 더 접근(랜덤 I/O 증가) |
범위 검색 성능 | 매우 우수 | 상대적으로 낮음 |
삽입/삭제 성능 | 상대적으로 낮음 (정렬 필요) | 상대적으로 우수 |
3. 클러스터링 팩터와 클러스터링 인덱스의 관계
- 클러스터링 인덱스가 적용된 테이블은 물리적으로 정렬되므로 클러스터링 팩터 값이 낮다.
- 반대로, 비클러스터링 인덱스에서는 클러스터링 팩터 값이 높을 수 있다.
- 클러스터링 팩터 값이 낮을수록 인덱스 성능이 우수하며, 범위 검색 시 I/O 비용이 적게 든다.
4. 실무에서 클러스터링 인덱스 활용 예시
- 날짜 기반 로그 데이터 테이블
- created_at 컬럼을 클러스터링 인덱스로 지정하면, 최신 데이터가 연속된 블록에 저장되어 빠른 조회 가능.
- 고객 정보 테이블
- customer_id가 자주 조회되면, 이를 클러스터링 인덱스로 설정하여 성능 향상.
- 주문 내역 테이블
- order_id를 기준으로 정렬하면, 한 고객의 주문 기록을 빠르게 검색 가능.
5. 결론
- 클러스터링 팩터는 인덱스 순서와 테이블 데이터 순서의 일치도를 나타내는 지표로, 낮을수록 성능이 좋다.
- 클러스터링 인덱스는 데이터를 특정 컬럼 순서대로 물리적으로 정렬하는 인덱스로, 범위 검색에 유리하지만 삽입/삭제 성능 저하 가능성이 있다.
- 클러스터링 팩터가 낮아야 인덱스 검색 성능이 향상되므로, 인덱스 설계 시 이를 고려하여 테이블을 최적화하는 것이 중요하다.
728x90