什么是MySQL分区?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (14)

我看过文件(...),但用你自己的话说,我想知道它是什么以及为什么使用它。

  1. 它主要用于多台服务器,所以不会拖下一台服务器吗?
  2. 因此,部分数据将位于server 1上,部分数据将位于server 2上。服务器3将“指向”服务器1或服务器2...这就是它的工作方式吗?
  3. 为什么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
);

这样可以加快速度,例如:

  1. 简单地删除旧数据: 更改表员工删除分区P0;
  2. 数据库可以加快这样的查询: 选择计数(*)在“2000-01-01”及“2000-12-31”期间按商店分别离职的雇员。_身份证;

知道所有数据只存储在p2分区上。

扫码关注云+社区