请问rocksdb中的kv rocksdb实例中的raft列簇,在官方文档中说: 用于存储各个 Region 的元信息,请问这里的说的region元信息和pd中的元信息有什么关联呢?这里存储的元信息只是这个tikv实例的元信息,但pd中的元信息是全部的,对吗?在一个问题是tidb表结构的元信息是存储在哪里呢?

请问rocksdb中的kv rocksdb实例中的raft列簇,在官方文档中说: 用于存储各个 Region 的元信息,请问这里的说的region元信息和pd中的元信息有什么关联呢?这里存储的元信息只是这个tikv实例的元信息,但pd中的元信息是全部的,对吗?在一个问题是tidb表结构的元信息是存储在哪里呢?

你说的是这个吧,
https://docs.pingcap.com/zh/tidb/stable/tidb-computing#元信息管理

元信息管理

TiDB 中每个 DatabaseTable 都有元信息,也就是其定义以及各项属性。这些信息也需要持久化,TiDB 将这些信息也存储在了 TiKV 中。

region 有两种方式对数据进行处理:

  1. 每个表单独的 region
  2. 所有的表可共用 region

然后 region 中的信息,都是通过region 的leader 传递 给 PD的,一般这个行为称为 “心跳”,不属于Raft的那种;
然后 每个表中包含了多个region,这样可以打散读写热点,大概就是这个样子的

这样回答看能否解决你的问题

1 个赞

表明单个region的我是谁,我在哪,我是干什么的,心跳信息的数据来源。

最新的region信息是在tikv里,严格讲pd只是tikv region信息的缓存,由region心跳上报到pd,pd根据region信息和设置的调度策略进行region的调度,由tikv根据调度信息完成相应处理。

1 个赞

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