region和table的关系

我们知道一个table是通过region分布在不同的节点上,对应的关系是一个table和N个region。但是如果是做partition的时候,他是如何做的呢?

2 Likes

普通表在新建时默认会分配一个初始 region ,后续随着数据量增长不断进行 region split ,对于分区表来说,建表的时候每个 partition 分配一个初始 region,后续分区内数据量不断增长时也会进行 region split ,本质上和普通表没有什么区别,只不过从元信息层面看是多个 partition 组成了一张完整的表。可以参考这篇文档里手工 split region 说明:
https://docs.pingcap.com/zh/tidb/stable/sql-statement-split-region#split-分区表的-region

1 Like

@这道题我不会,你好, 请教一下,一开始建表时,会自动给这张表分配一个region,当执行大量操作时,超过96MB,region会自动split,此时是1张表对应N个region,那么如果我又删除大量数据时,此时,该表对应的1个region,并且数据量很小了,我将这个region与其余比较小的region执行merge操作,那么:
1、此时是1个region对应N张表嘛?
2、如果1是的话,那么其实table与region的对应的关系是不是应该是:1个table可以对应N个region;1个region也可以对应N张表嘛?

1 Like

在 region 进行 merge 时,PD 调度参数 enable-cross-table-merge 可以用来控制是否允许 merge 不同表的 region ,默认情况下是不允许的,此时就不会存在单个 region 对应多张表的情况,在设置为 true 后才允许跨表 merge region 。

3 Likes

哦哦哦,好的,知道了,谢谢。
那这么说的话,如果没有设置允许跨表合并的话,merge合并的只能是一个表的多个小region,
这个跨表合并为一个region,会对后面的读写操作有影响嘛?

对读写操作基本没有影响~

ok,好的,谢谢

在5.0中,已经把enable-cross-table-merge参数默认改为true啦, What’s New in TiDB 5.0

好的,巩固一下基础。。

那么5.0及以后,table与region的对应的关系是:1个table可以对应N个region;1个region也可以对应N张表了?

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。