it-swarm.com.de

Was ist MYSQL-Partitionierung?

Ich habe die Dokumentation gelesen ( http://dev.mysql.com/doc/refman/5.1/en/partitioning.html ), möchte aber in Ihren eigenen Worten wissen, was es ist und warum es ist gebraucht.

  1. Wird es hauptsächlich für mehrere Server verwendet, um nicht einen Server herunterzuziehen?
  2. Ein Teil der Daten befindet sich also auf Server1, und ein Teil der Daten befindet sich auf Server2. Und Server 3 "zeigt" auf Server1 oder Server2 ... funktioniert das so?
  3. Warum konzentriert sich die MYSQL-Dokumentation auf die Partitionierung auf demselben Server ... wenn der Zweck darin besteht, sie auf mehrere Server zu verteilen?
56
TIMEX

Die Idee der Partitionierung besteht nicht darin, mehrere Server zu verwenden, sondern mehrere Tabellen anstelle einer Tabelle. Sie können eine Tabelle in viele Tabellen unterteilen, sodass alte Daten in einer Untertabelle und neue Daten in einer anderen Tabelle angezeigt werden können. Dann kann die Datenbank Abfragen optimieren, bei denen Sie nach neuen Daten fragen und wissen, dass sie in der zweiten Tabelle enthalten sind. Außerdem legen Sie fest, wie die Daten partitioniert werden.

Einfaches Beispiel aus der MySQL-Dokumentation :

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,
    store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
    PARTITION p0 VALUES LESS THAN (1991),
    PARTITION p1 VALUES LESS THAN (1996),
    PARTITION p2 VALUES LESS THAN (2001),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

Dies ermöglicht es, z. B. zu beschleunigen:

  1. Alte Daten einfach löschen:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Datenbank kann eine Abfrage wie folgt beschleunigen:

    SELECT COUNT(*)
    FROM employees
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
    GROUP BY store_id;
    

Wissen, dass alle Daten nur auf der P2-Partition gespeichert werden.

150

Eine partitioned - Tabelle ist eine einzige logische Tabelle, die aus mehreren physischen Untertabellen besteht. Der Partitionierungscode ist eigentlich nur ein Wrapper um einen Satz von Handler-Objekten , Die die zugrunde liegenden Partitionen darstellen und leitet Anforderungen über die Handler-Objekte an die Speicher-Engine weiter. Partitionieren ist eine Art Blackbox, die die zugrunde liegenden - Partitionen auf der SQL-Ebene vor Ihnen verbirgt. Sie können sie jedoch leicht sehen, indem Sie Das Dateisystem betrachten, in dem die Komponententabellen angezeigt werden mit einer durch Hash getrennten Namenskonvention . 

Zum Beispiel ist Eine einfache Möglichkeit, den Umsatz jedes Jahres in einer separaten Partition zu platzieren:

CREATE TABLE sales (
 order_date DATETIME NOT NULL,
 -- Other columns omitted
) ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date)) (
 PARTITION p_2010 VALUES LESS THAN (2010),
 PARTITION p_2011 VALUES LESS THAN (2011),
 PARTITION p_2012 VALUES LESS THAN (2012),
 PARTITION p_catchall VALUES LESS THAN MAXVALUE );

lesen Sie mehr hier