파티션(Partition)은 대용량 데이터를 처리할 때 성능과 관리의 용이성을 위해 데이터를 분할하는 방법입니다. 이를 통해 한 개의 대형 테이블을 작은 조각으로 나누어 관리하고,
데이터 처리 시간을 단축시킬 수 있습니다.
✔️ 파티션을 지우면 파티션 안에 데이터도 함께 지워진다.
✔️ 외래 키를 설정할 수 없다.
✔️ 스토어드 프로시저, 스토어드 함수, 사용자 변수 등을 파티션 함수나 식에 사용할 수 없다.
✔️ 임시 테이블은 파티션 기능을 사용할 수 없다.
✔️ 파티션 키에는 일부 함수만 사용할 수 있다.
✔️ 파티션 개수는 최대 8192개까지 지원한다.
✔️ RANGE파티션은 숫자형의 연속된 범위를 사용하고, LIST파티션은 숫자형 또는 문자형의 연속되지 않은 것을 키로 지정한다.
✔️LIST파티션에 MAXVALUE는 사용할 수 없다. 모든 경우의 파티션 값을 지정해야한다.
CREATE TABLE 테이블명 (
컬럼명1 데이터형,
컬럼명2 데이터형,
...
)
PARTITION BY [ RANGE | LIST | HASH | KEY ] (컬럼명);
PARTITION 테이블명1 VALUES [ LESS THAN | IN ] (값),
PARTITION 테이블명2 VALUES [ LESS THAN | IN ] (값),
...
ALTER TABLE 테이블명 ADD PARTITION (파티션조건)
ALTER TABLE문으로 분할
기존 part3을 part3, part4로 분할한다.
ALTER TABLE partTBL
REORGANIZE PARTITION part3 INTO(
PARTITION part3 VALUES LESS THAN(1986),
PARTITION part4 VALUES LESS THAN MAXVALUE);
OPTIMIZE TABLE partTBL; -- 변경내용을 적용시켜준다.
ALTER TABLE partTBL
REORGANIZE PARTITION part1, part2 INTO(
PARTITION part12 VALUES LESS THAN(1979));
OPTIMIZE TABLE partTBL;
ALTER TABLE partTBL DROP PARTITION part12;
select * from partTBL;
select TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'parttbl';