파티셔닝이란?
-> 하나의 논리적인 테이블을 물리적인 테이블로 분리
사용이유
MySQL의 경우는 파일로 저장. Memory보다 인덱스가 크면 더 느려짐.
로그 파일은 주기적으로 오래된 것을 지워야함. 즉, 범위를 기준으로 파티셔닝하면 좋음
MySQL에서의 처리 방식
제약 사항
PK와 UK들은 모두 파티션 키 컬럼을 포함해야한다.
MySQL을 파일로 저장되는 형태. 만약 파티션이 많은데, 다 불러올 경우 모든 파일을 불러와서 메모리에 부하가 나타남.
MySQL 파티션 종류
1)레인지 파티션
~사용처
시간 개념 단위로 분석 or 삭제
범위 기반으로 균등한 파티션
~파티션 재구성
파티션의 레코드가 많은 수록 오래 걸린다
최소 읽기 잠금은 필요
~파티션 추가 및 삭제
가장 마지막 파티션만 추가 가능.
삭제는 매우 빠름
2)리스트 파티션
~레인지 파티션와 유사
키 값 하나하나를 리스트로 나영해야 한다.
MAXVALUE 사용 불가능
~사용처
파티션 키 값이 카테고리처럼 고정적
키 값이 연속되지 않고 정렬 순서와 관계가 없음
3)해시 파티션
파티션 표현식의 결과를 MOD연산 -> 따라서 결과가 항상 정수 타입 & 파티션 이름 부여는 의미x
~사용처
특정 컬럼의 값에 사용빈도가 영향을 받지 않음
모든 데이터들이 비슷한 사용 빈도
~파티션의 삭제, 분할, 병합
파티션 갯수만 변경가능(전체 재분배)
4)키 파티션
~해시 파티션와 유사
주어진 컬럼들 MD5 해싱
대부분의 데이터 타입 사용 가능
의석이 최고! 리스펙