MySQL
파티셔닝
수색…
비고
RANGE 파티셔닝 . 이 유형의 파티셔닝은 지정된 범위에 속하는 컬럼 값을 기반으로 파티션에 행을 지정합니다.
LIST 파티셔닝 . RANGE에 의한 파티셔닝과 비슷하지만 파티셔닝은 이산 값 집합 중 하나와 일치하는 열을 기반으로 선택됩니다.
HASH 파티셔닝 . 이 유형의 파티션에서는 테이블에 삽입 될 행의 C 럼 값에 대해 작동하는 g 용자 정의 표현식에 의해 리턴 된 값에 따라 파티션이 선택됩니다. 함수는 음수가 아닌 정수 값을 산출하는 MySQL에서 유효한 모든 표현식으로 구성 될 수 있습니다. 이 유형의 확장 인
LINEAR HASH
도 사용할 수 있습니다.KEY 파티셔닝 . 이런 유형의 파티셔닝은 HASH에 의한 파티셔닝과 비슷하지만, 평가할 하나 이상의 컬럼 만 제공되며, MySQL 서버는 자체 해싱 기능을 제공한다. 이러한 열은 정수 값 이외의 값을 포함 할 수 있습니다. MySQL이 제공하는 해시 함수는 열 데이터 유형에 관계없이 정수 결과를 보장하기 때문입니다. 이 유형의 확장 인
LINEAR KEY
도 사용할 수 있습니다.
범위 분할
| | | 위별로 파티션 된 테이블은 파티션 표현식 값이 주어진 | 위 내에있는 행을 각 파티션에 포함하도록 파티션됩니다. 범위는 연속적이어야하지만 겹치지 않아야하며 VALUES LESS THAN
연산자를 사용하여 정의됩니다. 다음 몇 가지 예를 들어 다음과 같은 테이블을 작성하여 1 - 20의 번호가 지정된 20 개의 비디오 상점 체인에 대한 인사 레코드를 보관한다고 가정합니다.
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT NOT NULL,
store_id INT NOT NULL
);
이 표는 필요에 따라 여러 가지 방법으로 범위별로 분할 할 수 있습니다. 한 가지 방법은 store_id
열을 사용하는 것입니다. 예를 들어 다음과 같이 PARTITION BY RANGE
절을 추가하여 테이블을 4 가지 방법으로 분할 할 수 있습니다.
ALTER TABLE employees PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
MAXVALUE
는 가능한 가장 큰 정수 값보다 큰 정수 값을 나타냅니다 (수학 언어에서는 상한선으로 사용됩니다).
MySQL 공식 문서를 기반 으로합니다 .
LIST 파티셔닝
목록 분할은 여러 가지 방법으로 범위 분할과 유사합니다. RANGE로 파티션을 구분할 때와 마찬가지로 각 파티션을 명시 적으로 정의해야합니다. 두 가지 유형의 파티셔닝의 주된 차이점은 목록 파티셔닝에서 각 파티션이 일련의 연속 범위 중 하나가 아닌 값 목록 집합 중 하나에서 열 값의 멤버십을 기반으로 정의되고 선택된다는 것입니다. 값. 이것은 PARTITION BY LIST(expr)
을 사용하여 수행됩니다. expr
은 열 값이거나 열 값을 기반으로 정수 값을 반환 한 다음 VALUES IN (value_list)
을 사용하여 각 파티션을 정의합니다. 여기서 value_list
는 a 쉼표로 구분 된 정수 목록.
다음 예제에서는 파티션 된 테이블의 기본 정의가 여기에 표시된 CREATE TABLE
문에 의해 제공된다고 가정합니다.
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
);
다음 표와 같이 4 개의 프랜차이즈간에 20 개의 비디오 상점이 분산되어 있다고 가정합니다.
부위 | 상점 ID 번호 |
---|---|
북쪽 | 3, 5, 6, 9, 17 |
동쪽 | 1, 2, 10, 11, 19, 20 |
웨스트 | 4, 12, 13, 14, 18 |
본부 | 7, 8, 15, 16 |
같은 영역에 속한 상점의 행이 동일한 파티션에 저장되는 방식으로이 테이블을 파티션하려면
ALTER TABLE employees PARTITION BY LIST(store_id) (
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);
MySQL 공식 문서를 기반 으로합니다 .
해시 파티셔닝
HASH에 의한 파티셔닝은 주로 사전 결정된 수의 파티션간에 데이터의 균등 한 분배를 보장하기 위해 사용됩니다. 범위 또는 목록 분할을 사용하면 지정된 열 값 또는 열 값 집합을 저장할 파티션을 명시 적으로 지정해야합니다. 해시 파티셔닝에서는 MySQL이 이것을 처리하고, 해쉬 할 컬럼 값과 분할 된 테이블을 나눌 분할 수에 따라 컬럼 값이나 표현식을 지정하면된다.
다음 문은 store_id 열에서 해싱을 사용하고 4 개의 파티션으로 분할 된 테이블을 만듭니다.
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
PARTITIONS
절을 포함하지 않으면 파티션의 수는 기본적으로 1입니다.
MySQL 공식 문서를 기반 으로합니다 .