sql >> Database teknologi >  >> RDS >> Mysql

Hvad er MYSQL-partitionering?

Ideen bag partitionering er ikke at bruge flere servere, men at bruge flere tabeller i stedet for en tabel. Du kan opdele en tabel i mange tabeller, så du kan have gamle data i en undertabel og nye data i en anden tabel. Så kan databasen optimere forespørgsler, hvor du beder om nye data velvidende, at de er i den anden tabel. Hvad mere er, du definerer, hvordan data er opdelt.

Simpelt eksempel fra MySQL-dokumentationen :

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

Dette gør det muligt at fremskynde f.eks.:

  1. Slip gamle data ved simpelt:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Database kan fremskynde en forespørgsel som denne:

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

Velvidende, at alle data kun er gemt på p2-partitionen.



  1. Hvordan man designer en rejsewebstedsdatabase

  2. Hvordan får man SQL_CALC_FOUND_ROWS-værdien ved hjælp af forberedte sætninger?

  3. Hvordan kan jeg få det sidste indsatte id ved hjælp af Hibernate

  4. Cache data i PHP SESSION, eller forespørgsel fra db hver gang?