🥞 BE
home

DB 파티셔닝 & 샤딩

Date
2024/05/19
Category
DB
Tag
MySQL
Detail
DB Engineering

파티셔닝

하나의 테이블을 여러개의 테이블로 변환하는 기술. 쿼리실행의 효율성을 높이기 위해서 데이터를 쉽게 찾아올 수 있도록 물리적으로 테이블을 분할하는것.
수직 파티셔닝
데이터베이스의 테이블을 열(Column) 단위로 나누는 것
많은 컬럼이 존재한다면 디스크의 여러 블록에 데이터가 저장되므로 I/O 성능 저하를 불러올 수 있다.
로우 체이닝(Row Chaining)
길이가 너무 커서 하나의 블록에 저장되지 못하고 다수의 블록에 나누어져 저장
로우 마이그레이션(Row Migration)
수정된 데이터를 해당 데이터 블록에 저장하지 못하고 다른 블록의 빈 공간에 저장
수평 파티셔닝
데이터베이스의 테이블을 행(Row) 단위로 나누는 것
검색 속도 향상.

Partitioning Types

By Range - 특정 범위에 따라 데이터를 분할하는 방식
By List - 특정 파티션 키 값의 리스트를 기반으로 데이터를 분할
By Hash - 파티션 키의 해시 값을 기반으로 데이터를 분할 (데이터가 고르게 분포되도록 보장가능)

Sharding Types

By Range - 데이터를 특정 값의 범위에 따라 샤드로 분할
By List - 특정 값 목록에 따라 데이터를 샤드로 분할
By Hash - 해시 함수는 데이터베이스 키를 해싱하여 샤드를 결정

Partitioning vs Sharding

파티셔닝은 단일 데이터베이스 내에서 테이블을 더 작은 부분으로 나누는 것 샤딩은 여러 데이터베이스 서버에 걸쳐 데이터를 분할하는 것
특징
파티셔닝 (Partitioning)
샤딩 (Sharding)
데이터베이스 위치
단일 데이터베이스 인스턴스 내
여러 데이터베이스 서버에 걸쳐
주요 목적
성능 최적화, 관리 용이성
수평적 확장성
관리 방법
같은 인스턴스 내에서 파티션별로 관리
각 샤드는 독립적으로 관리
복잡성
상대적으로 낮음
상대적으로 높음
용도
특정 쿼리 성능 최적화, 테이블 관리 용이
대규모 시스템에서 부하 분산 및 확장성 유지