请问TIDB的索引结构是什么呢

和mysql一样也是 B+Tree吗

Tidb索引数据结构(LSM-TREE)

tidb底层是rocksdb,一个kv数据库,用的数据结构是LSM-TREE

业务数据和索引数据,都会转为KV键值对再进行存储,底层tikv可以粗略理解为就是一个超大的Map结构。
这些KV键值对,存储在 RocksDB 中,数据结构是LSM树。

LSM-Tree结构,当有新的数据写入时,首先将其写入内存中的Memtable,Memtable会定期或者在达到一定大小时,将数据flush到磁盘上的SSTable中,当sst达到一定程度时,会压缩合成一个大ssttable

LSM-TREE结构

但是我 执行 show index from customer看一个表时,看到 index_type显示的是BTREE呀,是怎么回事呢

为了兼容mysql,只是一个显示

1 个赞

最初应该是为了对标兼容 MySQL 5.7 协议吧,仅仅是兼容性显示而已,底层实际存储并不是的。

Tree结构的,看了相关视频,好像也是KV结构存储

索引也是编码成KV存储到TiKV中的,编码规则见https://docs.pingcap.com/zh/tidb/stable/tidb-computing#索引数据和-key-value-的映射关系
TiKV底层使用Rocksdb作为key values存储引擎,底层数据结构是LSM-tree

推荐看下tikv的文档:

2 个赞

LSM-TREE

也是kv存储把

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