我已阅读文档 (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html),但我想用您自己的话说,它是什么以及为什么使用它。
- 主要用于多台服务器,不会拖垮一台服务器吗?
- 因此,部分数据将在 server1 上,部分数据将在 server2 上。服务器 3 将“指向”服务器 1 或服务器 2……它是这样工作的吗?
- 为什么 MYSQL 文档侧重于在同一服务器内进行分区...如果目的是将其分布在服务器之间?
最佳答案
分区背后的想法不是使用多台服务器,而是使用多张表而不是一张表。您可以将一个表拆分为多个表,这样您就可以在一个子表中保存旧数据,在另一个表中保存新数据。然后,数据库可以优化查询,因为您知道它们在第二个表中,因此您需要新数据。此外,您还可以定义数据的分区方式。
来自the MySQL Documentation 的简单示例:
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
);
这可以加快例如:
通过简单的方式删除旧数据:
ALTER TABLE employees DROP PARTITION p0;
数据库可以加速这样的查询:
SELECT COUNT(*) FROM employees WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' GROUP BY store_id;
知道所有数据都只存储在 p2 分区上。
关于mysql - 什么是 MYSQL 分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579930/