DB

[MySQL] 테이블 파티셔닝

구로모논 2025. 4. 14. 17:03

테이블 파티셔닝이란?

  • 하나의 큰 테이블을 논리적으로 여러 개의 파티션으로 나누어 저장하는 방식
  • 대량 데이터 처리에 효과적

장점

  1. 쿼리 성능 향상파티션 프루닝(Partition Pruning)으로 특정 파티션만 조회
  2. 데이터 삭제 속도 개선 → DELETE 대신 DROP PARTITION으로 빠르게 삭제
  3. INSERT 성능 향상 → 특정 파티션에만 추가
  4. 테이블 크기 관리 최적화 → 데이터 분산 저장
  5. 아카이빙 용이 → 특정 파티션을 파일로 저장 후 삭제 가능

ℹ️ 파티션 프루닝: 조건에 따라 필요한 파티션만 조회하는 기법

 

✅ 단점

  1. 특정 쿼리에서 성능 저하
  • 파티션 키(파티션을 나누는 컬럼)이 조회 조건에 포함되어 있지 않으면 오히려 일반 테이블보다 느려질 수 있음
  1. 인덱스 관리가 어려움
  • 파티션 키 외에 다른 컬럼을 인덱스로 추가했을 때, 각 파티션 별로 개별적인 인덱스가 생성됨.

→ 파티션 키를 포함하여 복합 인덱스를 활용하면 조회 성능이 향상될 수 있음.

  1. 파티션 이동이 발생하는 UPDATE의 경우, DELETE → INSERT가 내부적으로 실행되어 성능 저하 발생.

→ 되도록 파티션 키는 변경되지 않는 값으로 설계해야 함.

  1. 테이블 설계 변경이 어려움
  • AUTO_INCREMENT는 반드시 PK 값의 일부여야 함.
  • FK 사용 불가
  • 파티션 키 변경 불가

→ 테이블 설계를 처음부터 신중하게 해야 함.

  1. 파티션 추가, 삭제 자동화 작업 별도 필요
  1. 데이터가 많지 않을 경우 일반 테이블보다 느릴 수 있음

→ 데이터가 많지 않다면, 인덱스를 통해 최적화 하는 것이 더 효율적일 수 있음.

예제

CREATE TABLE api_logs (
    id INT AUTO_INCREMENT,
    api_url VARCHAR(255),
    status_code INT,
    log_message TEXT,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id, created_at)
) PARTITION BY RANGE(YEAR(created_at)) (
    PARTITION p202501 VALUES LESS THAN (202501),
    PARTITION p202502 VALUES LESS THAN (202502),
    PARTITION p202503 VALUES LESS THAN (202503)

'DB' 카테고리의 다른 글

Database Table Lock  (0) 2025.04.14