sql >> Databáze >  >> RDS >> Mysql

Co je to MYSQL Partitioning?

Myšlenkou rozdělování není použití více serverů, ale použití více tabulek místo jedné tabulky. Tabulku můžete rozdělit do mnoha tabulek, takže můžete mít stará data v jedné podtabulce a nová data v jiné tabulce. Poté může databáze optimalizovat dotazy, kde požadujete nová data s vědomím, že jsou ve druhé tabulce. A co víc, definujete, jak jsou data rozdělena.

Jednoduchý příklad z dokumentace MySQL :

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

To umožňuje urychlit např.:

  1. Vypuštění starých dat jednoduchým způsobem:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Databáze může urychlit dotaz takto:

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

Vědět, že všechna data jsou uložena pouze na oddílu p2.



  1. Existuje schopnost ANY_VALUE pro mysql 5.6?

  2. Srovnávání manuálního nasazení databáze vs. automatizovaná nasazení

  3. Vybrat všechny sloupce kromě jednoho v MySQL?

  4. Hromadné vkládání MySQL přes PHP