sql >> Database >  >> RDS >> Mysql

Wat is MYSQL-partitionering?

Het idee achter partitioneren is niet om meerdere servers te gebruiken, maar om meerdere tabellen te gebruiken in plaats van één tabel. U kunt een tabel in meerdere tabellen verdelen, zodat u oude gegevens in de ene subtabel en nieuwe gegevens in een andere tabel kunt hebben. Vervolgens kan de database query's optimaliseren waarbij u om nieuwe gegevens vraagt, wetende dat ze in de tweede tabel staan. Bovendien definieert u hoe de gegevens worden gepartitioneerd.

Eenvoudig voorbeeld uit de MySQL-documentatie :

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

Dit maakt het mogelijk om bijvoorbeeld te versnellen:

  1. Oude gegevens eenvoudig verwijderen:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Database kan een zoekopdracht als deze versnellen:

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

Wetende dat alle gegevens alleen op de p2-partitie worden opgeslagen.



  1. Gebruikersregistratie en e-mailverificatie PHP en MySQL

  2. MySQL-groep per SUM

  3. Tijdstempelvelden in django

  4. Moeten we sorteerkolom, primaire sleutel op samengestelde index (MySQL) opnemen