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.:
-
Eliminare i vecchi dati in modo semplice:
ALTER TABLE employees DROP PARTITION p0;
-
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.