Database의 Partitioning

break 없는 while loop·2025년 2월 9일
post-thumbnail

1. 파티셔닝?

데이터베이스에서 파티셔닝은 하나의 큰 테이블이나 인덱스를 관리하기 쉽고 효율적으로 사용하기 위해 여러 개의 작은 단위(파티션)로 나누는 기법을 말한다. 이 방식은 단순히 데이터를 나누는 것 이상의 효과를 제공한다.

2. 상세 설명

1. 기본 개념

  • 논리적 분할: 파티셔닝은 하나의 큰 테이블을 여러 개의 논리적 단위로 분할하는 것이다. 이 파티션들은 사용자가 관리하기 쉽도록 나누어지며, 각 파티션은 전체 테이블의 일부 데이터를 담는다.
  • 물리적 저장: 실제 저장소에서는 각 파티션이 별도의 데이터 파일이나 저장 영역에 위치할 수 있다. 이를 통해 특정 파티션에 대해 독립적인 백업, 복구, 또는 유지보수를 진행할 수 있다.

2. 파티셔닝의 목적과 장점

  • 성능 최적화:
    • 쿼리 성능 향상: 많은 경우 쿼리 시 특정 조건(예: 날짜 범위, 지역 등)에 해당하는 파티션만 스캔하게 되어 불필요한 데이터 접근을 줄일 수 있다. 이를 '파티션 프루닝(Partition Pruning)'이라고 하며, 전체 테이블을 스캔하는 것보다 훨씬 빠른 결과를 얻을 수 있다.
    • 병렬 처리: 여러 파티션에 분산된 데이터에 대해 동시에 작업(예: 병렬 쿼리 실행)을 수행할 수 있어 전체 처리 속도를 높일 수 있다.
  • 관리 효율성:
    • 유지보수 작업의 단순화: 대규모 데이터를 소규모 파티션으로 분리하면, 특정 파티션에 대한 백업, 복구, 인덱스 재구축 등의 작업을 개별적으로 수행할 수 있어 전체 시스템의 관리 부담이 줄어든다.
    • 데이터 아카이빙 및 삭제 용이성: 예를 들어, 오래된 데이터가 있는 파티션을 통째로 삭제하거나 보관함으로써 데이터 보존 정책을 쉽게 적용할 수 있다.

3. 주요 파티셔닝 기법

  • 범위 파티셔닝 (Range Partitioning):
    • 특정 컬럼(예: 날짜, 숫자 값 등)을 기준으로 값의 범위에 따라 데이터를 분할한다.
    • 예: 2020년, 2021년, 2022년 데이터 각각을 별도의 파티션으로 관리
  • 리스트 파티셔닝 (List Partitioning):
    • 특정 컬럼의 값이 미리 정의된 목록에 따라 분할된다.
    • 예: 지역이나 국가별로 데이터를 나누는 경우
  • 해시 파티셔닝 (Hash Partitioning):
    • 해시 함수를 사용하여 데이터를 균등하게 분배한다.
    • 예: 고객 ID를 해시 함수에 넣어 파티션 번호를 결정
  • 복합 파티셔닝 (Composite Partitioning):
    • 두 가지 이상의 파티셔닝 기법을 결합하여 사용한다.
    • 예: 먼저 범위 파티셔닝으로 연도별로 나눈 후, 각 연도 내에서 해시 파티셔닝을 적용하여 데이터 분포를 균일하게 조정

4. 고려사항 및 한계

  • 쿼리 패턴: 파티셔닝은 주로 특정 컬럼을 기준으로 자주 쿼리하는 경우에 효과적이다. 쿼리 패턴이 파티셔닝 기준과 맞지 않으면 성능 향상이 미미할 수 있다.
  • 관리 복잡성: 파티션의 수가 많아지면 오히려 관리가 복잡해질 수 있으며, 잘못된 파티셔닝 전략은 오버헤드를 발생시킬 수 있다.
  • 인덱스 관리: 파티셔닝된 테이블은 각 파티션마다 인덱스가 생성될 수 있으므로, 인덱스 관리에도 신경을 써야 한다.
profile
프로그래밍 지식 아카이브용

0개의 댓글