Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in MySQL unter Angabe des Pfads jeder Partition

Detaillierte Einführung in MySQL unter Angabe des Pfads jeder Partition

迷茫
迷茫Original
2017-03-26 14:08:571259Durchsuche

Sie können für jede Partition der Partitionstabelle einen eigenen Speicherpfad angeben. Für die Tabelle der innodb-Speicher-Engine können Sie nur den Datenpfad angeben, da die Daten und der Index vorhanden sind In einer Datei gespeichert. Die MYISAM-Speicher-Engine kann Datendateien und Indexdateien separat angeben. Im Allgemeinen müssen nur RANGE-, LIST-Partitionen und Unterpartitionen die Pfade separat angeben Von allen Partitionen sind HASH- und KEY-Partitionen gleich. Der angegebene Pfad für die RANGE-Partition ist derselbe wie für die LIST-Partition. Zur Erläuterung verwenden wir hier die LIST-Partition. 1. MYISAM-Speicher-Engine

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');
Hinweis: Die Datendateien und Indexdateien der MYISAM-Speicher-Engine werden in separaten Datenbanken gespeichert, sodass sie definiert werden können Für Datendateien und Indexdateien Entsprechende Pfade kann die INNODB-Speicher-Engine nur Datenpfade definieren.

2. INNODB-Speicher-Engine

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

Nach Angabe des Pfads generierte innodb 4 Pfade zum Datenspeicher im ursprünglichen Pfad. In der Datei generiert myisam eine th.par-Datei, die angibt, dass es sich bei der Tabelle um eine Partitionstabelle handelt und die Datendatei und die Indexdatei auf den tatsächlichen Speicherpfad verweisen.

3. Unterpartition

1. Unterpartition

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. Unterpartitionen aufteilen

Sie können auch einen Pfad für eine Partition angeben und dann einen Pfad für die Unterpartition angeben, aber das ist bedeutungslos weil die Existenz von Daten durch die Unterpartition bestimmt wird.
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'
        )
    );

Hinweis:

1. Der angegebene Pfad muss vorhanden sein, sonst kann die Partition nicht erfolgreich erstellt werden

2 Speicher-Engine und Indexdateien werden in separaten Bibliotheken gespeichert, sodass separate Pfade für Datendateien und Indexdateien definiert werden können. Die INNODB-Speicher-Engine kann nur Datenpfade definieren

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in MySQL unter Angabe des Pfads jeder Partition. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn