二级索引在 TiDB server 中是如何存储的

如题,两个问题:

  1. 二级索引在tidb server中存储位置是内存还是磁盘?
  2. 结构是B-tree还是其它数据结构?

在tidb server中如何存储,不是在tikv中如何存储。

感谢回答

2 个赞

二级索引存储在 TIKV Server 里面,每次查询和数据查询是一样的,都是通过底层 TiKV Server 通过 KV 的 seek 或者 get 方式进行查询。TiDB 存储的主要是 region cache 就是对应的 KV 的地址 key range 信息。

2 个赞

那我还是没搞明白,如果user表(userid,email),userid是主键,email是二级索引,那么执行select * from user where email=xxx这条语句,是如何判断email=xxx这条记录,是否存在于memtable中呢?
因为按我了解的信息,memtable中有且只有1个跳表,并且这个跳表是按主键的key排序。实在想不通这样按二级索引查询时如何确定这条记录在不在memtable

通过二级索引的 key range 扫描定位,也是数据的读逻辑。已经收集到数据以后,返回给上一层的父亲算子,然后再回表找到对应的数据的 key range 进行数据查询,再返回给 TiDB Server 。

1 个赞

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