什么是MYSQL分区?
我已阅读文档( http://dev.mysql.com/doc/refman/5.1/en/partitioning.html ),但我想用你自己的话来说,它是什么以及为什么使用它。
- 它主要用于多个服务器,所以它不会拖拽一台服务器?
- 所以,部分数据将在server1上,部分数据将在server2上。 而服务器3将“指向”server1或server2 …是它是如何工作的?
- 为什么MYSQL文档专注于在同一台服务器上进行分区……如果目的是要在服务器之间进行分布?
分区背后的想法是不使用多个服务器,而是使用多个表而不是一个表。 您可以将一个表分成多个表,以便您可以在一个子表中包含旧数据,在另一个表中包含新数据。 然后,数据库可以优化查询,要求您知道新数据位于第二个表中。 更重要的是,您可以定义数据如何分区。
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 );
这可以加快例如:
-
简单地删除旧数据:
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分区上。