MySQL中“Partition”关键字的用途是什么?

时间:2010-04-01 11:12:49

标签: mysql create-table database-partitioning

因为我是MySQL的新手。 PARTITION在这个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 NOT NULL,
    store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN (21)
);

2 个答案:

答案 0 :(得分:3)

  

分区是一种方式   预先组织的表存储。您可以   说“桌子的一些行会去   在这里,有些人会去那里,还有其他人   会去其他地方“。   通常,取决于存储   引擎,效果就是传播了   表的行在不同的文件或   甚至不同的磁盘。

来自:MySQL 5.1 New Features: MySQL Partitions


您可能还有兴趣寻求有关“horizontal partitioning”的更多信息,以便更好地了解特别有用的情况。

答案 1 :(得分:2)

分区有助于通过拆分不同的存储桶来组织存储在表中的数据。

这类似于图书馆如何为不同科目设置独立的书架部分,而目录/索引卡抽屉通常按字母顺序分隔。

这有两个方面:

  1. 使用分区管理物理存储更容易。例如,一种策略可能是为每个分区的存储分配单独的磁盘。这通常有助于以平衡的方式在多个物理磁盘上传播数据。
  2. 数据库可以通过识别需要检索的有限分区来优化数据的检索和传递。通常在记住物理存储特性的情况下进行分区。因此,即使在检索时,数据库引擎通常也只需要从特定分区读取,因此可以从物理存储中读取整个数据块。
  3. 以下是一些链接,您可以从中获得更多详细信息:

    维基百科文章:http://en.wikipedia.org/wiki/Partition_(database

    关于分区的MySQL文档:http://dev.mysql.com/doc/refman/5.5/en/partitioning.html