CS/DB

[데이터베이스] 파티셔닝

BongChun 2023. 7. 18. 12:10

파티셔닝이란?

데이터베이스 분할(Partitioning) 또는 파티셔닝은 데이터베이스를 여러 부분으로 분할하는 것이다. 데이터베이스 분할은 중요한 튜닝기법으로 데이터가 너무 커져서, 조회하는 시간이 길어질 때 또는 관리 용이성, 성능, 가용성 등의 향상을 이유로 행해지는 것이 일반적이다. 분할된 각 부분을 ‘파티션’이라고 부른다.
- 위키백과

서비스 규모가 커지면서 DB의 크기 또한 커지게 되면 기존의 시스템에서 성능 저하와 메모리 부족 등의 문제가 발생 할 수 있다. 하나의 테이블에 너무 많은 데이터가 생겨 크기가 커지면 이런 문제들이 발생하게 되는데 이런 문제를 해결하기 위해 파티셔닝 기법이 사용된다.

목적

  • 성능
    • Query의 성능을 향상시킨다.
    • 풀 스캔에서 데이터를 읽어오는 범위를 줄여 성능을 향상시킬 수 있다.
  • 가용성
    • 각 분할된 테이블 별로 독립적인 작업을 수행할 수 있다. (백업, 복구, 인덱싱 등)
  • 관리 용이성
    • 데이터의 그룹화를 통해 데이터 생명 주기 관리(DML)과 같은 작업이 단순화되고 효과적으로 수행될 수 있다.

파티셔닝의 종류

파티셔닝은 수직 분할(Vertical Partitioning)수평 분할(Horizontal Partitioning)으로 나뉜다.

  • 수직 분할(Vertical Partitioning)은 열(column)을 기준으로 테이블을 나누는 방식을 의미한다.
  • 수평 분할(Horizontal Partitioning)은 행(row)를 기준으로 테이블을 나누는 방식을 의미한다.

수직 분할(Vertical Partitioning)

정규화의 경우 테이블 상의 중복을 제거하기 위해 테이블을 분리를 진행을 하게 되는데, 이 방식이 파티셔닝의 수직 분할 방식과 유사하다. 다만, 정규화는 데이터베이스의 무결성을 보장하고 중복성을 줄이는 것에 목적이 있고, 수직 분할은 열을 기준으로 테이블을 분할하여 데이터베이스의 성능을 향상시키기 위한 목적이 있다.

 

즉, 정규화는 테이블을 열을 기준으로 나누는 것이므로 수직 분할과 관련이 있지만 각각의 목적과 적용 상황은 다르다고 볼 수 있다.

수평 분할(Horizontal Partitioning)

수평 분할은 하나의 테이블을 두 개 이상의 테이블로 분할을 하게 되는데, 열은 유지가 된다. 각 테이블은 원본 테이블의 데이터를 나눠 갖게 된다.

분할 기준

범위 분할(Range Partitioning)

범위 분할은 열의 값을 기반으로 테이블을 분할한다. 각 파티션은 지정된 범위을 가지며 데이터가 범위에 해당하는 값이라면 해당 파티션에 배치한다.

목록 분할(List Partitioning)

목록 분할도 범위 분할과 같이 열의 값을 기반으로 테이블을 분할한다. 열의 값을 기반으로 목록을 작성하고 데이터가 해당 목록의 값과 일치하면 테이블에 배치한다.

해시 분할(Hash Partitioning)

해시 분할은 열의 해시 값에 따라 데이터를 분할한다. 데이터를 고르게 분산 시킬 수 있고, 분할 기준이 명확하지 않을 때 사용할 수 있다.

합성 분할(Composite Partitioning)

합성 분할은 여러가지 분할을 결합한 사용 방식으로, 두 개 이상의 열을 기준으로 데이터를 분할한다.

 

References