>데이터 베이스 >MySQL 튜토리얼 >각 파티션의 경로를 지정하는 MySQL에 대한 자세한 소개

각 파티션의 경로를 지정하는 MySQL에 대한 자세한 소개

迷茫
迷茫원래의
2017-03-26 14:08:571341검색

innodb 스토리지 엔진 테이블의 경우 데이터와 인덱스가 저장되므로 파티션 테이블마다 고유한 저장 경로를 지정할 수 있습니다. MYISAM 스토리지 엔진은 데이터 파일과 인덱스 파일을 별도로 지정할 수 있습니다. 일반적으로 RANGE, LIST 파티션 및 하위 하위 파티션만 각 파티션의 경로를 개별적으로 지정해야 합니다. HASH 파티션과 KEY 파티션은 동일합니다. RANGE 파티션에 지정된 경로는 LIST 파티션과 동일합니다. 여기서는 설명을 위해 LIST 파티션을 사용하겠습니다.

1. MYISAM 스토리지 엔진

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 스토리지 엔진은 데이터 경로만 정의할 수 있습니다.

2. 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 파일을 생성합니다.

3. 하위 파티션

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.