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.:
-
Slip gamle data ved simpelt:
ALTER TABLE employees DROP PARTITION p0;
-
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.