IT Study/데이터베이스 및 데이터 처리

🗂️ 대용량 테이블 파티셔닝 전략(Range, List, Hash 등) 구조 분석

cs_bot 2025. 4. 20. 16:37

1. 파티셔닝 개요

  • 데이터베이스의 성능, 관리 효율성을 높이기 위한 대용량 테이블 처리 기법으로 파티셔닝 적용함
  • 하나의 논리적 테이블을 물리적으로 다수의 작은 단위로 분할하여 저장 및 관리함
  • 쿼리 최적화, 병렬처리, 인덱스 관리, 아카이빙 정책, 백업 전략 등에서 유리함

2. 파티셔닝 도입 필요성

  • 테이블이 수억 건 이상으로 증가할 경우, 검색 성능 저하와 유지보수 부담 가중됨
  • 특정 조건 기반의 데이터 조회 시, 전체 테이블 스캔 발생으로 I/O 성능 병목 초래됨
  • 백업/복구/삭제/인덱싱 작업 시 비용 급증함
  • 테이블을 논리적으로 분리함으로써 수명 주기별 데이터 관리 유연성 확보 가능함

3. 파티셔닝 유형별 구조 및 특징

구분 Range Partition List Partition Hash Partition
분할 기준 연속된 범위 값 (예: 날짜, 금액 등) 명시된 개별 값 (예: 지역 코드, 카테고리 등) 해시 함수 결과 값 (예: ID MOD N 등)
대표 사용 시간 기반 로그, 회계자료 국가별 고객 데이터, 코드 기반 분류 테이블 균등한 데이터 분포가 필요한 경우
장점 관리 시점 기준의 범위 쿼리에 최적화됨 특정 값 기반의 필터링 성능 우수함 균등 분산에 따라 병렬 처리 성능이 뛰어남
단점 데이터 분포 불균형 시 일부 파티션 과중됨 값 추가 시 파티션 수동 갱신 필요함 파티션 조건이 불투명하여 관리성 저하됨
관리성 시간 순 백업/아카이빙에 유리함 파티션 키 관리의 직관성 높음 파티션 키 변경 불가, 해시 함수 재정의 어려움

4. 파티셔닝 내부 구조

  • 파티션 키(Partition Key)

    • 테이블 분할 기준이 되는 열 또는 열 조합으로 정의함
    • 분할 방식에 따라 RANGE, LIST, HASH 조건이 상이함
  • 파티션 테이블 정의 구문 예시 (Oracle 기준)

    CREATE TABLE sales_data (
      id NUMBER,
      region VARCHAR2(10),
      sale_date DATE
    )
    PARTITION BY RANGE (sale_date) (
      PARTITION p_2023q1 VALUES LESS THAN (TO_DATE('2023-04-01','YYYY-MM-DD')),
      PARTITION p_2023q2 VALUES LESS THAN (TO_DATE('2023-07-01','YYYY-MM-DD'))
    );
  • 로컬 인덱스(Local Index) vs 글로벌 인덱스(Global Index)

    • 로컬 인덱스: 각 파티션 단위로 독립적인 인덱스를 가짐, 유지관리 용이
    • 글로벌 인덱스: 전체 테이블 단위 인덱스, 특정 쿼리 성능 유리하나 파티션 변경 시 재생성 필요

5. 파티셔닝 전략 선택 기준

고려 요소 전략 방향
주기적인 날짜별 관리 Range Partition 적용, 예: 일/월 단위 로그 데이터
고정된 값 기반 구분 List Partition 활용, 예: 사업부 코드, 제품 분류 등
균등 분산이 중요함 Hash Partition 적합, 예: 무작위 ID 기반의 대규모 회원 정보
복합 조건 존재 Composite Partition 사용 (예: RANGE + HASH 또는 RANGE + LIST)

6. 실제 적용 사례

  • 공공기관 로그 데이터 관리

    • 월별 Range 파티션 설정 → 일정 기간 경과 시 파티션 드롭 및 백업 수행 → 성능과 저장공간 관리 효율화
  • 대형 커머스 회원 DB

    • 회원 ID 기반 Hash 파티션 적용 → 균등한 데이터 분포 보장 → 병렬 검색 및 트랜잭션 성능 향상
  • 다국적 서비스 사업자의 고객 데이터

    • 국가코드 기반 List 파티션 적용 → 국가별 마케팅 전략 및 데이터 마스킹 용이

7. 파티셔닝 고려 시 유의사항

  • 파티션 키 변경 불가로 사전 설계 중요성 강조됨
  • 너무 많은 파티션 생성 시 오히려 오버헤드 증가 가능
  • 일부 DBMS에서는 파티션 제한 개수 존재 (예: Oracle 1048576개 이하)
  • 통계 정보 갱신, 인덱스 동기화 등 관리 작업 주기적으로 필요함
  • 파티셔닝과 파티셔닝되지 않은 테이블 간 조인 성능 이슈 고려 필요함

8. 결론 및 제언

  • 대용량 테이블의 성능 및 유지보수 효율화를 위해 파티셔닝은 필수적인 구조로 자리잡고 있음
  • 사용 패턴, 쿼리 조건, 데이터 특성을 종합적으로 고려하여 적합한 파티셔닝 유형을 선택해야 함
  • 단일 전략보다는 복합 파티셔닝 및 인덱스 설계와 연계한 최적화 구조가 중요함
  • 데이터 수명 주기 및 백업 정책과도 연계하여 테이블 구조 설계하는 것이 바람직함