(MySQL) MySQL 파티션의 종류
1. 레인지 파티션
파티션키의 연속된 범위로 파티션을 정의하는 방법, 다른 파티션방법과는 달리 MAXVALUE라는 키워드를 이용해 명시되지 않은 범위의 키 값이 담긴 레코드를 저장하는 파티션을 정의 할 수 있다.
CREATE TABLE employees(
id INT NOT NULL,
first_name VARCHAR(30),
last_name VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
....)ENGINE=INNODB
PARTITION BY RANGE (YEAR(hired))(
PARTITION p0 VALUES LESS THAN(1991) ENGINE=INNODB,
PARTITION p1 VALUES LESS THAN(1996) ENGINE=INNODB,
PARTITION p2 VALUES LESS THAN(2001) ENGINE=INNODB,
PARTITION p3 VALUES LESS THAN MAXVALUE ENGINE=INNODB
);
****레인지 파티션 주의사항*******
레인지 파티션에서 NULL은 어떤 값보다 작은 값으로 간주된다. 만약 Employees파티션 테이블에 hired칼럼이 NULL인 레코드가 INSERT된다면 이 레코드는 입사 일자가 가장작은 값을 저장하는 p0파티션으로 저장된다.
날짜 칼럼의 값으로 파티션을 만들경우, 다음과 같은 파티션 키를 상요하는 파티셔닝은 피하는 것이좋다.
파티션키의 연속된 범위로 파티션을 정의하는 방법, 다른 파티션방법과는 달리 MAXVALUE라는 키워드를 이용해 명시되지 않은 범위의 키 값이 담긴 레코드를 저장하는 파티션을 정의 할 수 있다.
CREATE TABLE employees(
id INT NOT NULL,
first_name VARCHAR(30),
last_name VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
....)ENGINE=INNODB
PARTITION BY RANGE (YEAR(hired))(
PARTITION p0 VALUES LESS THAN(1991) ENGINE=INNODB,
PARTITION p1 VALUES LESS THAN(1996) ENGINE=INNODB,
PARTITION p2 VALUES LESS THAN(2001) ENGINE=INNODB,
PARTITION p3 VALUES LESS THAN MAXVALUE ENGINE=INNODB
);
****레인지 파티션 주의사항*******
레인지 파티션에서 NULL은 어떤 값보다 작은 값으로 간주된다. 만약 Employees파티션 테이블에 hired칼럼이 NULL인 레코드가 INSERT된다면 이 레코드는 입사 일자가 가장작은 값을 저장하는 p0파티션으로 저장된다.
날짜 칼럼의 값으로 파티션을 만들경우, 다음과 같은 파티션 키를 상요하는 파티셔닝은 피하는 것이좋다.
- UNIX_TIMESTAMP()를 이용한 변환 식을 파티션 키로 사용
- 날짜를 무자열로 포맷팅한 형태('2011-12-30')의 파티션 키
- YEAR()나 TO_DAYS()함수 이외의 함수가 사용된 파티션 키
댓글
댓글 쓰기