DB

[DB]Partitioning

상국이 2021. 6. 24. 18:22
728x90

1. Partitioning?

데이터가 많은 테이블이나 인덱스를 관리하기 쉬운 단위로 분리하는 방법

장점

Availability (가용성)

 - 물리적인 Partitioning으로 인해 전체 데이터의 웨손 가능성이 줄어들고 데이터 가용성이 향상된다.

Manageability (관리용이성)

 - 큰 Table들을 제거하여 관리를 쉽게 해준다.

Performance (성능)

 - 특정 DML과 Query의 성능을 향상시킴, 대용량 환경에서 효율적이다.

 - 많은 Insert가 있는 OLTP시스템에서 Insert 작업을 분리된 파티션들로 분산시켜 경합을 줄인다.

단점

- Table간의 Join에 대한 비용이 증가한다.

 - 테이블과 인덱스를 별도로 파티션할 수 없다. 

 

2.Partitioning 범위

Range Partitioning

 

 - 연속적인 숫자나 날짜 기준으로 Partitioning한다.

 - 손쉬은 관리 기법 제공에 따른 관리 시간을 단축할 수 있다.

 

 

List Partitioning

 

 - 특정 Partition에 저장 될 Data에 대한 명시적 제어가 가능하다.

 - 분포도가 비슷하며, 많은 SQL에서 해당 Column의 조건이 많이 들어오는 경우 유용하다.

 

 - Multi-Column Partition Key를 제공하기 힘들다.

 

Composite Partitioning

 - Partition의 Sub-Partitioning을 말한다.

 - 큰 파티션에 대한 I/O 요청을 여러 Partition으로 분산할 수 있다.

 - Range Partitioning 할 수 있는 Column이  있지만, Partitioning 결과 생성된 Partition이 너무 커서 효과적으로 관리할 수 없을 때 유용하다.

 

Hash Partitioning

 - Partition Key의 Hash값에 의한 Partitioning(균등한 데이터 분할 가능)

 - Select시 조건과 무관하게 병렬 Degree제공(질의 성능 향상

 - 특정 Data가 어느 Hash Partition에 있는지 판단 불가

 - Hash Partition은 파티션을 위한 범위가 없는 데이터에 적합

 

 

3.Partitioning 방법

Horizontal Partitioning

 → 데이터의 개수를 기준으로 나누어 Partition한다.

장점

 - 데이터, index의 개수가 작아지고 성능도 향상된다.

단점

 - 서버간의 연결과정이 많아진다.

 - 데이터를 찾는 과정이 기존보다 복잡하기 때문에 latency가 증가하게 된다.

 - 하나의 서버가 고장나게 되면 데이터의 무결성이 깨질 수 있다.

 

Vertical Partitioning

 → 테이블의 컬럼을 기준으로 나누어 Partitioning한다. 이미 정규화된 Data를 분리하는 과정이다.

- 도메인에 따라 쉽게 분리할 수 있으며 영향을 많이 받기 때문에 application level에서 CRUD를 구현한다.

 - 자주 사용하는 컬럼등을 분리시켜 성능을 향상시킬 수 있다.

728x90