[CS] DB Partitioning

오의석·2023년 11월 3일
0
  • 파티셔닝이란?
    -> 하나의 논리적인 테이블을 물리적인 테이블로 분리

  • 사용이유
    MySQL의 경우는 파일로 저장. Memory보다 인덱스가 크면 더 느려짐.
    로그 파일은 주기적으로 오래된 것을 지워야함. 즉, 범위를 기준으로 파티셔닝하면 좋음

  • MySQL에서의 처리 방식

  1. Where 절에서 파티션을 결정할 수 있는가?
  2. where 절에서 인덱스를 효율적으로 사용할 수 있는가?
  • 제약 사항
    PK와 UK들은 모두 파티션 키 컬럼을 포함해야한다.
    MySQL을 파일로 저장되는 형태. 만약 파티션이 많은데, 다 불러올 경우 모든 파일을 불러와서 메모리에 부하가 나타남.

  • MySQL 파티션 종류
    1)레인지 파티션
    ~사용처
    시간 개념 단위로 분석 or 삭제
    범위 기반으로 균등한 파티션

~파티션 재구성
파티션의 레코드가 많은 수록 오래 걸린다
최소 읽기 잠금은 필요

~파티션 추가 및 삭제
가장 마지막 파티션만 추가 가능.
삭제는 매우 빠름

2)리스트 파티션
~레인지 파티션와 유사
키 값 하나하나를 리스트로 나영해야 한다.
MAXVALUE 사용 불가능

~사용처
파티션 키 값이 카테고리처럼 고정적
키 값이 연속되지 않고 정렬 순서와 관계가 없음

3)해시 파티션
파티션 표현식의 결과를 MOD연산 -> 따라서 결과가 항상 정수 타입 & 파티션 이름 부여는 의미x

~사용처
특정 컬럼의 값에 사용빈도가 영향을 받지 않음
모든 데이터들이 비슷한 사용 빈도

~파티션의 삭제, 분할, 병합
파티션 갯수만 변경가능(전체 재분배)

4)키 파티션
~해시 파티션와 유사
주어진 컬럼들 MD5 해싱
대부분의 데이터 타입 사용 가능

profile
끊임없이 나아가는 사람이 되어볼게요.

1개의 댓글

comment-user-thumbnail
2023년 11월 19일

의석이 최고! 리스펙

답글 달기