집 >데이터 베이스 >MySQL 튜토리얼 >MySQL Advanced 15 - 테이블 파티셔닝
1. 파티셔닝을 사용하는 이유는 무엇입니까?
데이터의 양이 너무 많은 경우(보통 수백만 또는 수천만 개의 데이터) 한 테이블의 데이터를 여러 테이블로 나누어 저장해야 합니다. 일부 쿼리는 크게 최적화될 수 있습니다. 주로 지정된 WHERE 문을 충족하는 데이터가 하나 이상의 파티션에만 저장될 수 있으므로 검색 시 다른 나머지 파티션을 찾을 필요가 없기 때문입니다.
2. mysql이 파티셔닝을 지원하는지 확인하세요
mysql이 파티셔닝을 지원하는지 확인하려면 다음 명령어를 사용하세요. ?
show variables like '%partition%';
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 ) 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 (21) );
이 예에서는 매장 직원과 관련된 모든 행이 파티션 p0에 저장되고 사무실 및 지원 직원과 관련된 모든 행이 파티션에 저장됩니다. p1, 관리 계층과 관련된 모든 행은 파티션 p2에 저장됩니다.
뷰 파티션
show create table employees;
LIST 파티셔닝은 "PARTITION BY LIST(expr)"를 사용하여 수행됩니다. 여기서 "expr"은 특정 열 값 또는 특정 열 값을 기반으로 하는 정수입니다. 정수 값 표현식을 반환한 다음 "VALUES IN (value_list)"로 각 파티션을 정의합니다. 여기서 "value_list"는 쉼표로 구분된 정수 목록입니다.
create table category_part( cid int unsigned not null auto_increment,cname varchar(64) not null,parent_id int not null,primary key (cid,parent_id)) partition by list(parent_id)( partition p1 values in (1,2,3,6,9), partition p2 values in (4,5,10,22,23), partition p3 values in (7,8,11,12,13), partition p4 values in (14,15,16,17,20), partition p5 values in (18,19,21,24,25) );
5. HASH 파티셔닝
해시 파티셔닝의 목적은 미리 정의된 파티션에 데이터를 균등하게 분배하여 각 파티션의 데이터 양을 보장하는 것입니다. 대략 동일합니다. RANGE 및 LIST 파티션에서는 특정 열 값 또는 열 값 세트를 저장할 파티션을 명시적으로 지정해야 하며, HASH 파티셔닝에서는 MYSQL이 자동으로 이러한 작업을 완료하며 사용자가 수행해야 하는 모든 작업은 데이터를 기반으로 합니다. 열 값은 열 값 또는 표현식을 지정하고, 분할된 테이블을 나눌 파티션 수를 지정합니다.
HAHS 파티셔닝을 사용하여 테이블을 분할하려면 CREATE TABLE 문에 PARTITION BY HASH(expr) 절을 추가합니다. 여기서 "expr"은 정수를 반환하는 표현식입니다. expr은 필드 유형이 정수인 열 이름일 수 있습니다. 또한 사용자는 나중에 PARTITITIONS num 절을 추가해야 할 수도 있습니다. 여기서 num은 분할할 파티션 수를 나타내는 음수가 아닌 정수입니다. PARTITIONS 절이 포함되지 않은 경우 파티션 수는 기본적으로 1개입니다.
create table t_hash ( a int, b datetime) partition by hash (YEAR(b)) partitions 4;
LINEAR HASH 파티셔닝의 장점은 파티션 추가, 삭제, 병합, 분할 속도가 빨라져 처리에 유리합니다. 많은 양의 데이터. 단점은 HASH 파티셔닝을 사용하여 얻은 데이터 분포와 비교하여 각 파티션 간의 데이터 분포가 균형을 이루지 못할 수 있다는 것입니다.
6. 키 파티션
create table orders_key ( id int auto_increment, customer_surname varchar(30), store_id int, alesperson_id int, order_Date date, note varcahr(500), index_idx(id) ) engine=myisam partition by key(order_date) partitions 4;
이 파티션은 MySQL 서버가 다른 유형의 파티션과 달리 자체 해시 표현식을 사용한다는 점을 제외하면 해시 파티션과 유사합니다. int 또는 null 표현식.
위 내용은 MySQL Advanced Fifteen - Table Partitioning의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!