Het idee achter partitioneren is niet om meerdere servers te gebruiken, maar om meerdere tabellen te gebruiken in plaats van één tabel. U kunt een tabel in meerdere tabellen verdelen, zodat u oude gegevens in de ene subtabel en nieuwe gegevens in een andere tabel kunt hebben. Vervolgens kan de database query's optimaliseren waarbij u om nieuwe gegevens vraagt, wetende dat ze in de tweede tabel staan. Bovendien definieert u hoe de gegevens worden gepartitioneerd.
Eenvoudig voorbeeld uit de MySQL-documentatie :
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
);
Dit maakt het mogelijk om bijvoorbeeld te versnellen:
-
Oude gegevens eenvoudig verwijderen:
ALTER TABLE employees DROP PARTITION p0;
-
Database kan een zoekopdracht als deze versnellen:
SELECT COUNT(*) FROM employees WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' GROUP BY store_id;
Wetende dat alle gegevens alleen op de p2-partitie worden opgeslagen.