[Linux] Mysql 파티셔닝(Partitioning)
1. 파티셔닝의 목적
많은 데이터의 빠른 처리를 위한 방법중 하나로 데이터와 인덱스를 조각화하여 물리적 공간을 효율적으로 사용 할 수 있도록 만들어 성능을 개선할 수 있도록 함.
- 특정 데이터 집합의 추가 / 삭제가 간편
- 데이터 검색 시 특정 파티션만 읽어서 속도 향상
- 병렬처리 가능
- 한 테이블에 너무 많은 데이터 입력되었을시 발생하는 속도저하 방지
2. 내부 처리
주위 : 파티션에 사용 되는 값은 int, date, datetime형만 가능.
create table tb_1(
int_value int null,
reg_date datetime not null,
..
..
primary key(int_value)
)
parition by range(year(reg_date)){
partition p1 values less than(2012),
partition p2 values less than(2013),
..
..
partition px values less than maxvalue
}
3. 파티션 종류
range, list, hash, key
-list
PARTITION BY List (job_code) (
PARTITION p0 VALUES IN (3),
PARTITION p1 VALUES IN (1,9),
PARTITION p2 VALUES IN (2,6,7),
PARTITION p3 VALUES IN (4,5,8,NULL)
);
-hash : range나 list로 균등하기 나누기 어려울 때,
PARTITION BY HASH (id)
PARTITIONS 4
(
PARTITION p0 ENGINE = INNODB,
PARTITION p1 ENGINE = INNODB
PARTITION p2 ENGINE = INNODB
PARTITION p3 ENGINE = INNODB
);
4. 파티션의 추가, 삭제, 분할, 병합
각 파티셔닝 방법에 따라 다름
출처 / 참고 : http://blog.hibrainapps.net/131