TIM*_*MEX 60 mysql database partitioning
我已经阅读了文档(http://dev.mysql.com/doc/refman/5.1/en/partitioning.html),但我想用你自己的话说,它是什么以及为什么使用它.
Szy*_*ski 165
分区背后的想法不是使用多个服务器,而是使用多个表而不是一个表.您可以将表分成多个表,以便可以在一个子表中包含旧数据,在另一个表中包含新数据.然后,数据库可以优化您要求新数据的查询,因为他们知道它们位于第二个表中.更重要的是,您可以定义数据的分区方式.
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
);
Run Code Online (Sandbox Code Playgroud)
这样可以加快速度,例如:
通过简单的方式删除旧数据:
ALTER TABLE employees DROP PARTITION p0;
Run Code Online (Sandbox Code Playgroud)数据库可以加速这样的查询:
SELECT COUNT(*)
FROM employees
WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
GROUP BY store_id;
Run Code Online (Sandbox Code Playgroud)知道所有数据仅存储在p2分区上.
归档时间: |
|
查看次数: |
18993 次 |
最近记录: |