Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist MySQL-Partitionierung?

Die Idee hinter der Partitionierung ist nicht die Verwendung mehrerer Server, sondern die Verwendung mehrerer Tabellen anstelle einer Tabelle. Sie können eine Tabelle in viele Tabellen aufteilen, sodass Sie alte Daten in einer Untertabelle und neue Daten in einer anderen Tabelle haben können. Dann kann die Datenbank Abfragen optimieren, bei denen Sie nach neuen Daten fragen und wissen, dass sie sich in der zweiten Tabelle befinden. 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 z. B. zu beschleunigen:

  1. Alte Daten einfach löschen:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Die 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;
    

Zu wissen, dass alle Daten nur auf der p2-Partition gespeichert werden.