ホームページ  >  記事  >  データベース  >  各パーティションのパスを指定する MySQL の詳細な紹介

各パーティションのパスを指定する MySQL の詳細な紹介

迷茫
迷茫オリジナル
2017-03-26 14:08:571300ブラウズ

パーティション テーブルの各パーティションに独自のストレージ パスを指定できます。MYISAM ストレージ エンジンの場合、データとインデックスが 1 つのファイルに保存されるため、指定できるのはデータ パスのみです。 、データ ファイルを個別に指定できます。また、インデックス ファイル (通常、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. サブパーティション

2. サブパーティションはさらに分割されます

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'
        )
    );

サブパーティションのパスですが、データの存在はサブパーティションによって決定されるため、これには意味がありません。

注:

1. 指定されたパスが存在する必要があります。そうでない場合、パーティションは正常に作成できません。2. MYISAM ストレージ エンジンのデータ ファイルとインデックス ファイルは別個のライブラリに保存されるため、別々に定義できます。データ ファイルとインデックス ファイルのパス、INNODB ストレージ エンジンはデータ パスのみを定義できます

以上が各パーティションのパスを指定する MySQL の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。