집 >데이터 베이스 >MySQL 튜토리얼 >각 파티션의 경로를 지정하는 MySQL에 대한 자세한 소개
innodb 스토리지 엔진 테이블의 경우 데이터와 인덱스가 저장되므로 파티션 테이블마다 고유한 저장 경로를 지정할 수 있습니다. MYISAM 스토리지 엔진은 데이터 파일과 인덱스 파일을 별도로 지정할 수 있습니다. 일반적으로 RANGE, LIST 파티션 및 하위 하위 파티션만 각 파티션의 경로를 개별적으로 지정해야 합니다. HASH 파티션과 KEY 파티션은 동일합니다. RANGE 파티션에 지정된 경로는 LIST 파티션과 동일합니다. 여기서는 설명을 위해 LIST 파티션을 사용하겠습니다.
CREATE TABLE th (id INT, adate DATE) engine='MyISAM'PARTITION BY LIST(YEAR(adate)) ( PARTITION p1999 VALUES IN (1995, 1999, 2003) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx', PARTITION p2000 VALUES IN (1996, 2000, 2004) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx', PARTITION p2001 VALUES IN (1997, 2001, 2005) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx', PARTITION p2002 VALUES IN (1998, 2002, 2006) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx');
참고: MYISAM 스토리지 엔진의 데이터 파일과 인덱스 파일은 별도의 데이터베이스에 저장되므로 별도의 데이터베이스를 정의할 수 있습니다. 데이터 파일 및 인덱스 파일 경로, INNODB 스토리지 엔진은 데이터 경로만 정의할 수 있습니다.
CREATE TABLE thex (id INT, adate DATE) engine='InnoDB'PARTITION BY LIST(YEAR(adate)) ( PARTITION p1999 VALUES IN (1995, 1999, 2003) DATA DIRECTORY = '/data/data', PARTITION p2000 VALUES IN (1996, 2000, 2004) DATA DIRECTORY = '/data/data', PARTITION p2001 VALUES IN (1997, 2001, 2005) DATA DIRECTORY = '/data/data', PARTITION p2002 VALUES IN (1998, 2002, 2006) DATA DIRECTORY = '/data/data' );
innodb는 경로를 지정한 후 원래 경로의 데이터 스토리지를 가리키는 4개의 경로 파일을 생성했습니다. Myisam은 테이블이 분할된 테이블이고 데이터 파일과 인덱스 파일이 실제 저장 경로를 가리킨다는 것을 나타내는 th.par 파일을 생성합니다.
1. 하위 파티션
CREATE TABLE tb_sub_dir (id INT, purchased DATE) ENGINE='MYISAM' PARTITION BY RANGE( YEAR(purchased) ) SUBPARTITION BY HASH( TO_DAYS(purchased) ) ( PARTITION p0 VALUES LESS THAN (1990) ( SUBPARTITION s0 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1', SUBPARTITION s1 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1' ), PARTITION p1 VALUES LESS THAN (2000) ( SUBPARTITION s2 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2', SUBPARTITION s3 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2' ), PARTITION p2 VALUES LESS THAN MAXVALUE ( SUBPARTITION s4 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3', SUBPARTITION s5 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3' ) );
2. 하위 파티션이 더 세분화됩니다
CREATE TABLE tb_sub_dirnew (id INT, purchased DATE) ENGINE='MYISAM' PARTITION BY RANGE( YEAR(purchased) ) SUBPARTITION BY HASH( TO_DAYS(purchased) ) ( PARTITION p0 VALUES LESS THAN (1990) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx' ( SUBPARTITION s0 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1', SUBPARTITION s1 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1' ), PARTITION p1 VALUES LESS THAN (2000) DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx' ( SUBPARTITION s2 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2', SUBPARTITION s3 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2' ), PARTITION p2 VALUES LESS THAN MAXVALUE DATA DIRECTORY = '/data/data' INDEX DIRECTORY = '/data/idx' ( SUBPARTITION s4 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3', SUBPARTITION s5 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3' ) );
파티션 경로를 지정한 후 하위 파티션 경로를 지정할 수도 있지만 이는 의미가 없습니다. 데이터의 존재 여부는 하위 파티션에 따라 결정됩니다.
참고:
1. 지정된 경로가 있어야 합니다. 그렇지 않으면 파티션을 성공적으로 생성할 수 없습니다. 2. 스토리지 엔진과 인덱스 파일은 별도의 라이브러리에 저장되므로 데이터 파일과 인덱스 파일에 대해 별도의 경로를 정의할 수 있습니다. INNODB 스토리지 엔진은 데이터 경로위 내용은 각 파티션의 경로를 지정하는 MySQL에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!