Study/Computer Science

[Database] 파티셔닝(Partitioning)

욘아리 2025. 1. 8. 22:15

파티셔닝

데이터베이스 테이블을 관리와 성능 최적화를 위해 논리적 또는 물리적으로 분할하는 것을 말한다.

데이터를 파티션 단위로 나누어 특정 데이터에 대한 접근성과 관리 효율성을 높이는 데 목적이 있다.

 

파티셔닝의 목적 

1. 성능

  • 대용량 데이터 환경에서 데이터 접근 범위를 줄여 쿼리 성능을 향상시킨다.
  • Full Scan을 최소하하여 특정 쿼리를 가볍게 만들고, 데이터 접근 속도를 높인다.
  • 대용량 데이터 쓰기(WRITE) 작업에도 효율적이다.

2. 가용성

  • 데이터 손실이나 장애 발생 시 영향을 받는 범위를 줄인다.
  • 각 파티션 단위로 독립적으로 백업하고 복구 작업이 가능하다.
  • Disk I/O을 분산하여 경합을 줄이고 UPDATE 성능을 개선할 수 있다.

3. 관리용이성

  • 큰 테이블들을 분할하여 데이터 관리와 유지보수를 쉽게 할 수 있다.

이렇게 파티셔닝을 하게 되면 관리적, 성능적 측면에서 많은 장점이 있지만, 여러 파티션으로 쪼개기 때문에 테이블 간의 Join 비용이 증가한다. 또한, 테이블과 인덱스를 별도로 파티셔닝 할 수 없기 때문에 테이블과 인덱스를 같이 파티셔닝해야 한다는 단점도 존재한다.

 

파티셔닝의 종류

1. 수평(horizontal) 파티셔닝

하나의 테이블의 행(Row) 단위로 분할한다.

 

특징

  • 데이터의 개수에 따라 테이블을 분할하며, 데이터를 논리적으로 나누어 성능을 향상시킨다.
  • 일반적으로 동일한 데이터베이스 내에서 이루어진다.

장점

  • 데이터의 개수와 인덱스의 개수가 작아져 성능이 향상된다.

단점

  • 파티션 간 검색 시 성능 저하가 발생할 수 있다.

 

2. 수직(vertical) 파티셔닝

테이블의 열(Column)을 기준으로 분할한다.

 

특징

  • 자주 사용하는 컬럼을 분리하여 쿼리 성능을 최적화한다.
  • 정규화된 데이터를 더 세부적으로 분리하는 과정이다.

장점

  • 필요 없는 칼럼을 조회하지 않아 성능을 최적화한다.
  • 같은 타입의 데이터가 저장되므로 데이터 압축률이 높아진다.

단점

  • 추가적인 데이터 검색 작업이 필요해 latency가 증가할 수 있다.

 

파티셔닝 분할 기준

데이터베이스 관리 시스템은 분할에 대해 각종 기준(분할 기법)을 제공하고 있다.

분할은 '분할 키(partitioning key)'를 사용한다.

 

1. 범위 분할(range partitioning)

  • 연속적인 숫자나 날짜를 기준으로 파티셔닝
  • 분할 키 값이 범위 내에 있는지 여부로 구분
  • 우편번호, 날짜 등의 데이터에 적합

2. 목록 분할(list partitioning)

  • 값 목록에 파티션을 할당 분할 키 값을 그 목록에 비추어 파티션 선택
  • 특정 파티션에 저장될 데이터에 대한 명시적 제어 가능
  • 분포도가 비슷하며, 많은 SQL에서 해당 칼럼의 조건이 많이 들어오는 경우 유용

3. 해시 분할(hash partitioning)

  • 파티션 키의 해시 값에 의한 파티셔닝
  • 균등한 데이터 분할 가능
  • 특정 데이터가 어느 해시 파티션에 있는지 판단하기 어려움
  • 해시 함수의 값에 따라 파티션에 포함할지 여부 결정
  • 파티션을 위한 범위가 없는 데이터에 적합

4. 합성 분할(composite partitioning)

  • 상기 기술을 결합하는 것으로 파티션의 sub-partitioning
  • 큰 파이션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있음
  • 예를 들어, 먼저 범위 분할하고, 다음에 해시 분할

 

 

 

출처

https://gmlwjd9405.github.io/2018/09/24/db-partitioning.html

https://code-lab1.tistory.com/202