Myšlenkou rozdělování není použití více serverů, ale použití více tabulek místo jedné tabulky. Tabulku můžete rozdělit do mnoha tabulek, takže můžete mít stará data v jedné podtabulce a nová data v jiné tabulce. Poté může databáze optimalizovat dotazy, kde požadujete nová data s vědomím, že jsou ve druhé tabulce. A co víc, definujete, jak jsou data rozdělena.
Jednoduchý příklad z dokumentace 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
);
To umožňuje urychlit např.:
-
Vypuštění starých dat jednoduchým způsobem:
ALTER TABLE employees DROP PARTITION p0;
-
Databáze může urychlit dotaz takto:
SELECT COUNT(*) FROM employees WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' GROUP BY store_id;
Vědět, že všechna data jsou uložena pouze na oddílu p2.