请问下,单个region里面存储的是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内会有多个表。
学到了~
我理解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-table
和split-table
这两个配置项是什么关系,OR吗,还是说明split-table
优先级更高?
那是不是说,1个region 生成的时候,这个region 的start key,和end key 就差不多已经固定下来了?
tidb 配置参数 split-region 的优先级更高
可以这么说
我们一般部署的tidb+tikv+pd模式就是TiDB模式。