mysql - 什么是MYSQL分区?

我已经阅读了文档(http://dev.mysql.com/doc/refman/5.1/en/partitioning.html),但我想用您自己的话说,它是什么以及为什么要使用它。
它主要用于多个服务器,因此不会拖拽一个服务器吗?
因此,部分数据将在服务器1上,部分数据将在服务器2上。服务器3将“指向”服务器1或服务器2…这就是它的工作方式吗?
如果目的是将MySQL文档分散到不同的服务器上,那么为什么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分区上。