首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql水平分区是否为每个分区创建新的ibd文件?

mysql水平分区是否为每个分区创建新的ibd文件?
EN

Database Administration用户
提问于 2016-08-23 11:44:17
回答 2查看 454关注 0票数 0

据我所知,mysql中创建的每个表都会创建一个ibd文件,作为指向表的指针。对此表所做的任何更改都发生在此ibd文件上。现在,如果大小为1GB的Table1和它的ibd文件x.ibd被水平划分为p1、p2、p3、p4。大小相同的新分区p1、p2、p3和p4是否各有各自的ibd文件?如果没有,我们怎么做呢?

EN

回答 2

Database Administration用户

发布于 2016-08-23 18:18:37

简短回答:是的;4个.ibd文件的大小约为总大小的1/4。

较长的答覆:

有很多事情发生..。

  • 不同的引擎已经实现了PARTITIONs。在从5.1 (引入分区时)到至少5.7的所有情况下,分区实际上是一个单独的表。
  • innodb_file_per_table控制InnoDB是将新表(及其分区)放在ibdata1文件中还是在单个.ibd文件(S)中。
  • “原生分区”可能很快就会出现(5.8?);这将改变这个答案的很大一部分。
  • 根据数据分配和PARTITION子句在CREATE TABLE中的详细信息,分区的大小不一定相同。

根据我的经验,PARTITION BY RANGE是唯一有用的用例,只有4种用例可以使用它。详细信息

票数 1
EN

Database Administration用户

发布于 2016-08-23 12:19:18

如果您执行这样的简单查询:

代码语言:javascript
运行
复制
CREATE TABLE partitioned
    (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT ,
     column1 VARCHAR(12))

PARTITION BY HASH(id) PARTITIONS 3;

您将看到,它确实为每个分区创建了独立的IBD文件(至少在mysql 5.7上是这样做的,无法回忆旧版本上的行为)

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

https://dba.stackexchange.com/questions/147622

复制
相关文章

相似问题

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