region 存储的是1张表的数据还是多张表的数据

请问下,单个region里面存储的是1张表的数据还是多张表的数据?

默认是一张表,行为受如下配置影响
https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#split-table

1 个赞

请问下,生成一个region的时候,它的start-key,end_key 就已经固定下来了吗,

嗯,DDL语句可能会引起start_key和end_key发生变化,否则不会变

是的,start-key,end_key和region的大小有关,region大小默认是96m

创建表时默认会创建一个region,如果是分区表就和分区数一样,随着数据增加region达到一定大小后会分裂,导致region 的start/end key范围变化。当region数据降低到一定范围会将相邻的region合并,key范围也会变化。如果开启跨表合并enable-cross-table-merge |的话则一个region内会有多个表。

2 个赞

学到了~:+1::+1:

我理解Region的分裂和合并只会影响每个Region的START_KEY和END_KEY,但是一张表的key range在创建时就已经定下来了,用tidb-ctl keyrange命令可以看到,它不会随着Region的变化而变化

默认配置下一个 region 是被一张表独占的,tidb 和 tikv 各有一个配置项来控制这个行为:
tidb-server 配置文件中 split-table 默认值:true
tikv-server 配置文件中 coprocessor.split-region-on-table 默认值:false

split-region-on-table

  • 开启按 table 分裂 Region 的开关,建议仅在 TiDB 模式下使用。
  • 默认值:false

TiDB 模式是什么意思

难道是说假设96M的region的key 区间是固定的?这不好固定把,因为可能遇到有的key大,有的key小?

那么,一个region 是96M,这96M的region的key 区间是固定的?这不好固定吧,因为可能遇到有的key大,有的key小?

tidb +pd+tikv使用transaction kv就是tudb模式

现在region的max size是144m,大小和行数都是近似值,key区间只是个逻辑范围,就像表分区一样,分裂或合并后调整就行了

就是一般的部署了 tidb tikv 的模式。文档里这么说是因为 tikv 可以独立运转的。

噢噢,那 split-region-on-tablesplit-table这两个配置项是什么关系,OR吗,还是说明split-table优先级更高?

那是不是说,1个region 生成的时候,这个region 的start key,和end key 就差不多已经固定下来了?

tidb 配置参数 split-region 的优先级更高

可以这么说

我们一般部署的tidb+tikv+pd模式就是TiDB模式。