region size计算

请教下 region是个逻辑概念,并没有一个物理的文件与其对应,那么在插入数据判断是否split 或merge时如何快速获得region的大小? 另外根据官方文档描述rocksdb.raftcf存储的是region的元信息,这里的元信息包含哪些内容?这些元信息的存储维护管理是否也是通过raft /region形式?

region 逻辑概念,具体信息是 tikv 心跳时上报给 pd 的

至于元信息,有点多了:得分 tikv 和 region 的,建议搜一下:调度 ,这个关键字就ok,很多文章的,eg:以TiDB热点问题来谈Region的调度流程

tikv上报pd region信息时是怎么计算的region大小? 另外元信息我指的是 在rocksdb.raftcf里的元信息作用及其维护方式?

region 自己平时就维护自己的大小,上报时直接上报就ok,至于 raftcf 存储的 region 元信息用于持久化

可能我表达的不太清楚,region内维护一段连续keyvalue数据,这些数据到tikv时存储在rocksdb,在rocksdb里可能多个sst文件内交叉存储。tikv或pd用什么方式来维持region信息的大小,是每次增加数据时都会把增加数据后的大小持久化存储还是有什么其他方式可以计算region内数据大小? 另外对于那些已经GC的但是rocksdb还未compact的数据是否计入到region大小内。

1、region 的分裂是 pd 产生的调度,至于根据什么,可以看 region 的元信息包含的字段,有这个 region 的大小的(注意是 近似值)
2、region 的大小,记录的是近似值,另外,region 元信息不是记录的具体大小,而是有 keys 数量,last_index\commit_index 之类的内容,至于 GC 的问题,GC了就不包含了,不需要等待 compaction

也就是说region的大小是按照keys数量* key的预估值来做的近似统计,keys的数量是在写入时实时维护吗?

嗯,但具体维护应该不是实时维护的

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