首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是MYSQL分区?

什么是MYSQL分区?
EN

Stack Overflow用户
提问于 2009-10-16 19:23:33
回答 3查看 23.5K关注 0票数 68

我已经阅读了文档(http://dev.mysql.com/doc/refman/5.1/en/partitioning.html),但我想用您自己的话来说,它是什么以及为什么要使用它。

  1. 是不是主要用于多台服务器,这样就不会拖累一台服务器?
  2. ,因此,部分数据将在server1上,部分数据将在server2上。以及服务器3是否会“指向”server1或server2...is它是如何工作的?
  3. 为什么MYSQL文档关注的是同一个server...if中的分区目的是将其分散到服务器上?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-16 19:42:13

分区背后的思想不是使用多个服务器,而是使用多个表而不是一个表。您可以将一个表划分为多个表,以便可以将旧数据放在一个子表中,将新数据放在另一个表中。然后,数据库可以优化查询,在您请求新数据的情况下,知道它们在第二个表中。更重要的是,您可以定义数据的分区方式。

来自the MySQL Documentation的简单示例

代码语言:javascript
复制
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. 通过简单的方法删除旧数据:

ALTER TABLE employees DROP PARTITION p0;

  • 数据库可以加快查询速度,如下所示:

SELECT COUNT(*) FROM employees SELECT '2000-01-01‘和'2000-12-31’GROUP BY store_id;

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

票数 188
EN

Stack Overflow用户

发布于 2018-10-16 20:40:07

分区的表是由多个物理子表组成的单个逻辑表。分区代码实际上只是一组表示底层分区的Handler对象的包装器,它通过Handler对象将请求转发给存储引擎。分区是一种黑盒,它在SQL层对您隐藏底层分区,尽管您可以通过查看文件系统很容易地看到它们,在文件系统中,您将看到具有散列分隔的命名约定的组件表。

例如,这里有一个简单的方法来将每年的销售额放到一个单独的分区中:

代码语言:javascript
复制
CREATE TABLE sales (
 order_date DATETIME NOT NULL,
 -- Other columns omitted
) ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date)) (
 PARTITION p_2010 VALUES LESS THAN (2010),
 PARTITION p_2011 VALUES LESS THAN (2011),
 PARTITION p_2012 VALUES LESS THAN (2012),
 PARTITION p_catchall VALUES LESS THAN MAXVALUE );

阅读更多here

票数 2
EN

Stack Overflow用户

发布于 2019-10-10 17:09:42

它实际上并不是关于使用不同的服务器实例(尽管有时这是一种可能性),它更多的是关于在不同的物理分区中划分表。

它将您的表和索引划分为更小的部分,甚至将其细分为更小的部分。可以把它想象成一个大仓库(一张大桌子),里面有几百万本不同主题、不同年份(比如2000-2019)的杂志。分区意味着您将把它们组织到大仓库内的不同房间中。它们仍然属于同一个仓库,但是现在根据您的数据库分区策略,您可以在逻辑级别对它们进行分组。

索引实际上就像是保存一张表,记录哪本杂志在你的仓库里,或者在你仓库里的房间里。正如您所看到的,数据库分区和索引之间有很大的区别,它们可以很好地结合在一起使用。

您可以在我的网站上阅读更多关于Database Partitioning的文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1579930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档