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