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

Che cos'è il partizionamento MySQL?

L'idea alla base del partizionamento non è quella di utilizzare più server ma di utilizzare più tabelle invece di una tabella. Puoi dividere una tabella in più tabelle in modo da avere i vecchi dati in una sottotabella e i nuovi dati in un'altra tabella. Quindi il database può ottimizzare le query in cui chiedi nuovi dati sapendo che si trovano nella seconda tabella. Inoltre, definisci come partizionare i dati.

Semplice esempio tratto da la documentazione 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
);

Ciò consente di accelerare ad es.:

  1. Eliminare i vecchi dati in modo semplice:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Il database può velocizzare una query come questa:

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

Sapendo che tutti i dati sono archiviati solo sulla partizione p2.