본문 바로가기
Database/Oracle

[ORACLE] DBA_CLUSTERS 완벽 해설 : 클러스터 기반 데이터 저장 구조와 성능 최적화 전략

by Papa Martino V 2025. 10. 13.
728x90

DBA_CLUSTERS
[ORACLE] DBA_CLUSTERS

 

Oracle Database는 데이터를 효율적으로 저장하고 빠르게 접근하기 위한 다양한 구조를 제공합니다. 그중 클러스터(Cluster)는 공통 컬럼을 기준으로 여러 테이블의 데이터를 물리적으로 같은 블록에 저장하여 I/O 효율을 높이는 고급 기능입니다. 이러한 클러스터의 정의, 속성, 저장 매개변수를 관리하기 위한 핵심 데이터 딕셔너리 뷰가 바로 DBA_CLUSTERS입니다. 이 글에서는 해당 뷰의 구조, 주요 컬럼, 활용법, 그리고 클러스터를 이용한 실무 성능 최적화 기법을 전문가 관점에서 자세히 다룹니다.


1. DBA_CLUSTERS란?

DBA_CLUSTERS는 데이터베이스 내 정의된 모든 클러스터(Cluster) 객체의 정보를 제공하는 Oracle 딕셔너리 뷰입니다. 이 뷰는 클러스터의 이름, 소유자, 인덱스 방식, 저장 파라미터, 공간 관리 옵션 등 다양한 정보를 포함하고 있어, DBA가 클러스터 구조를 파악하고 성능 및 저장 효율성을 분석할 때 필수적으로 사용됩니다. Oracle 클러스터는 데이터 접근 패턴이 특정 조인(Join) 조건을 자주 반복하는 테이블 집합에 매우 효과적이며, 특히 OLTP 환경에서 공통 키 값을 기준으로 자주 함께 조회되는 데이터를 효율적으로 관리할 수 있도록 설계되었습니다.


2. DBA_CLUSTERS 주요 컬럼 구조

컬럼명 데이터 타입 설명
OWNER VARCHAR2(30) 클러스터를 소유한 스키마 이름
CLUSTER_NAME VARCHAR2(30) 클러스터 이름
TABLESPACE_NAME VARCHAR2(30) 클러스터가 속한 테이블스페이스 이름
CLUSTER_TYPE VARCHAR2(9) 클러스터 유형 (INDEX, HASH)
KEY_SIZE NUMBER 클러스터 키의 평균 크기 (바이트 단위)
BLOCKS NUMBER 클러스터가 차지하는 데이터 블록 수
AVG_BLOCKS_PER_KEY NUMBER 키당 평균 블록 수 (데이터 밀집도 측정용)
AVG_BLOCKS_PER_KEY_LAST_ANALYZED DATE 클러스터 통계가 마지막으로 수집된 날짜
HASHKEYS NUMBER 해시 클러스터의 해시 키 개수 (HASH TYPE일 경우)
PCT_FREE NUMBER 블록 내 여유 공간 비율 (업데이트 고려용)
PCT_USED NUMBER 블록 내 사용 공간 비율 (공간 활용률 분석용)
CLUSTER_SIZE NUMBER 클러스터당 예상 크기 (메모리 및 저장공간 관리용)

이 중 CLUSTER_TYPE은 클러스터가 인덱스 클러스터(Index Cluster)인지, 혹은 해시 클러스터(Hash Cluster)인지를 구분하는 가장 중요한 컬럼입니다. 각 유형에 따라 데이터 접근 방식과 성능 특성이 크게 달라집니다.


3. 클러스터의 두 가지 유형 비교

구분 인덱스 클러스터 (INDEX) 해시 클러스터 (HASH)
데이터 접근 방식 클러스터 키를 인덱스를 통해 탐색 해시 함수를 이용한 직접 접근
장점 조인 성능 향상, I/O 감소 키 기반 조회 속도 매우 빠름
단점 인덱스 유지관리 비용 발생 해시 충돌 시 성능 저하 가능
적합한 상황 다중 테이블 간 공통 컬럼 조인 단일 테이블의 특정 키 기반 조회
설정 방법 CREATE CLUSTER ... INDEX 명시 CREATE CLUSTER ... HASHKEYS 지정

DBA_CLUSTERS 뷰는 이러한 클러스터 유형을 한눈에 파악할 수 있는 정보 제공원으로, DB 설계자가 어떤 데이터 접근 전략을 사용하고 있는지를 직접 분석할 수 있게 해줍니다.


4. DBA_CLUSTERS 조회 예제

SELECT OWNER, CLUSTER_NAME, CLUSTER_TYPE, TABLESPACE_NAME, KEY_SIZE
FROM DBA_CLUSTERS
ORDER BY OWNER, CLUSTER_NAME;

이 쿼리를 통해 데이터베이스 내 클러스터 목록과 유형, 키 크기를 확인할 수 있습니다. 특히 해시 클러스터의 경우 HASHKEYS 값을 함께 확인하면 해시 함수의 분포 상태를 점검할 수 있습니다.


5. 클러스터 구조의 실제 활용 예시

① 인덱스 클러스터 생성 예시

CREATE CLUSTER emp_dept_cluster (deptno NUMBER(4))
SIZE 512
TABLESPACE users;

CREATE INDEX idx_emp_dept_cluster ON CLUSTER emp_dept_cluster;

CREATE TABLE employees (
  empno NUMBER(4),
  ename VARCHAR2(20),
  deptno NUMBER(4)
) CLUSTER emp_dept_cluster (deptno);

CREATE TABLE departments (
  deptno NUMBER(4),
  dname VARCHAR2(30)
) CLUSTER emp_dept_cluster (deptno);

이 구조에서는 EMPLOYEES와 DEPARTMENTS가 동일한 DEPTNO 값을 기준으로 같은 데이터 블록에 저장됩니다. 즉, 두 테이블을 조인할 때 디스크 I/O가 최소화되어 빠른 조회가 가능합니다.

② 해시 클러스터 생성 예시

CREATE CLUSTER hash_emp (empno NUMBER(6))
HASHKEYS 200
SIZE 512;

CREATE TABLE employees (
  empno NUMBER(6),
  ename VARCHAR2(30),
  job   VARCHAR2(20)
) CLUSTER hash_emp (empno);

해시 클러스터는 해시 함수를 통해 데이터 위치를 직접 계산하므로, 인덱스 탐색 과정을 생략하고 즉시 접근이 가능합니다. 이는 대규모 조회 작업에서 성능 이점을 제공합니다.


6. DBA_CLUSTERS 활용 시 얻을 수 있는 관리 이점

  • 성능 분석: 클러스터 유형별 I/O 효율성 및 공간 활용률 점검
  • 공간 관리: PCT_FREE, BLOCKS, CLUSTER_SIZE를 통한 테이블스페이스 조정
  • 튜닝 지표 확보: KEY_SIZE, AVG_BLOCKS_PER_KEY 등을 활용한 밀집도 분석
  • 클러스터 테이블 관계 파악: 동일한 클러스터에 속한 테이블 매핑 확인

7. DBA_CLUSTERS와 관련된 주요 뷰 비교

뷰 이름 설명 주요 활용 목적 비교 요약
DBA_CLUSTERS 클러스터의 정의 및 속성 정보 클러스터 구조 분석 핵심 정보 중심
DBA_CLUSTER_HASH_EXPRESSIONS 해시 클러스터의 해시 키 정의 해시 분포 및 키 성능 분석 HASH TYPE용 세부 정보
DBA_CLUSTER_COLUMNS 클러스터 키 컬럼 정보 클러스터 키 구조 확인 키 기반 매핑 분석
DBA_TABLES 테이블 단위의 저장 정보 테이블 수준 공간 관리 개별 객체 분석용

8. 클러스터 성능 최적화 전략

① 클러스터 크기와 해시키 조정

클러스터를 설계할 때, SIZEHASHKEYS 값을 업무 패턴에 맞게 조정하는 것이 중요합니다. 값이 너무 작으면 충돌이 빈번해지고, 너무 크면 공간 낭비가 발생합니다. DBA_CLUSTERS의 AVG_BLOCKS_PER_KEY 값을 참고하여 균형을 맞추는 것이 좋습니다.

② 정기적인 통계 수집

DBMS_STATS.GATHER_CLUSTER_STATS 프로시저를 이용해 통계를 주기적으로 갱신하면, 옵티마이저가 최신 데이터 분포를 반영해 효율적인 실행 계획을 생성할 수 있습니다.

③ 클러스터 재구성(리빌드)

오래된 클러스터는 블록 단편화로 인해 성능이 저하될 수 있습니다. 이 경우 ALTER CLUSTER ... MOVE 명령을 통해 클러스터를 재배치(Rebuild)하면 공간 효율이 향상됩니다.


9. DBA_CLUSTERS 관리 시 주의사항

  • 해시 클러스터는 DML 변경이 많은 환경에서는 비효율적일 수 있음
  • 클러스터 구조 변경 시 관련 테이블 재구성이 필요
  • PCT_FREE/PCT_USED 비율 조정은 데이터 패턴 기반으로 설정
  • 클러스터가 테이블스페이스 공간을 독점하지 않도록 모니터링

10. 결론

DBA_CLUSTERS는 Oracle 데이터베이스의 물리적 구조와 성능 효율을 이해하는 데 필수적인 뷰입니다. 이를 통해 DBA는 데이터의 저장 방식, 블록 밀집도, 해시 충돌 가능성 등을 체계적으로 관리할 수 있습니다. 특히 클러스터 구조는 데이터 접근 패턴이 명확한 환경에서 강력한 성능 향상을 가져오며, DBA_CLUSTERS는 이를 모니터링하고 최적화하기 위한 가장 신뢰할 수 있는 진단 도구입니다.


출처

  • Oracle® Database Reference 19c - DBA_CLUSTERS View
  • Oracle® Database Concepts Guide
728x90