Tanken bakom partitionering är inte att använda flera servrar utan att använda flera tabeller istället för en tabell. Du kan dela upp en tabell i många tabeller så att du kan ha gamla data i en undertabell och nya data i en annan tabell. Då kan databasen optimera frågor där du ber om ny data med vetskap om att de finns i den andra tabellen. Dessutom definierar du hur data partitioneras.
Enkelt exempel från 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
);
Detta gör det möjligt att snabba upp t.ex.:
-
Släpp gamla data genom att enkelt:
ALTER TABLE employees DROP PARTITION p0;
-
Databas kan påskynda en fråga så här:
SELECT COUNT(*) FROM employees WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' GROUP BY store_id;
Att veta att all data endast lagras på p2-partitionen.