LevelDB 源码分析「七、版本管理」 | SF-Zhou's Blog #177
Replies: 3 comments
-
文章里仍然会有疏漏的地方,只能等通读了所有代码再来修复完善了 |
Beta Was this translation helpful? Give feedback.
-
Level 0 的文件由于可能存在重叠,所以每个文件都需要进行判断;而 Level 1 及以上的文件可以使用 FindFile 二分查找了 这里对于level0层比较使用的是userKey而不是internal_key我没太理解,假设对于level0层存在两个重叠文件 极端情况userkey都相同 第一个sstable范围largest seq=100 smallest=80 第二个sstable largest=70 smallest=60 user_key都相同 但是由于仅仅比较user_key如果使用快照进行查找比如seq=60的数据 根据leveldb的做法最差会导致读取两个sstable 而根据internal_key却可以直接忽略掉第一个sstable最差也就查找一个 |
Beta Was this translation helpful? Give feedback.
-
你说的极端情况下是会这样的,但这种极端情况概率实在太低了,我猜测 LevelDB 的作者不愿意为了这种“错误”的用法而增加额外检查、进而降低正常场景的执行性能。另外中文是有标点符号的。 |
Beta Was this translation helpful? Give feedback.
-
https://sf-zhou.github.io/leveldb/leveldb_07_version.html
Beta Was this translation helpful? Give feedback.
All reactions