1.TiKV的key是有序递增;MVCC多版本中版本号大的在前面,理解是key递减;这里是字面意思矛盾,真实怎么排序的?
图1-1
图1-2
2.最小存储单元是region。使用SeekPrefix(Key_Version) API,定位到第一个大于 等于这个 Key_Version 的位置。这个函数的原理是什么,二分法还是什么。(MySQL是二分法找到slot,然后遍历slot对应组数据。)
1.TiKV的key是有序递增;MVCC多版本中版本号大的在前面,理解是key递减;这里是字面意思矛盾,真实怎么排序的?
图1-1
2.最小存储单元是region。使用SeekPrefix(Key_Version) API,定位到第一个大于 等于这个 Key_Version 的位置。这个函数的原理是什么,二分法还是什么。(MySQL是二分法找到slot,然后遍历slot对应组数据。)
贴了图。
所以是两个规则吗?多版本下面。截取多版本key。原key升序,version降序。是这样吗?
1、TiKV 在 Key 中存储的 Timestamp(无论是 start_ts还是 commit_ts)都是 Timestamp 取反后的结果,其目的是让较新的数据(即 Timestamp 比较大的数据)排列在较老的数据(即 Timestamp 比较小的数据)前面。
2、region是逻辑对象,真正的物理存储是在底层的rocksdb上,可能在多个sst文件,sst文件内key的查找会使用布隆过滤、二分查找等方式,具体到文件内的定位可以看下面链接。
https://www.bookstack.cn/read/rocksdb-en/1effdc5a7ed30b15.md
SeekPrefix(Key_Version) 是rocksDB的函数可用于仅遍历指定的key
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。