read 流程
Questions
SuperVersion ? 为啥起这个名字?
多级index:
- ColumnFamily 根据Version中的
std::vector<FileMetaData*>
定位到具体的Table。 - Table根据
bloom filter
快速排出key不存在的case,如果key不存在,避免后续的磁盘操作。 - Table根据
IndexBlock
定位到对应的Datablock。 - 根据Datablock数据中的
restartPoint
列表二分查找,找到对应的restartPoint偏移, 进一步缩小查找区间。 - 在具体的
restartPoint
之间遍历查找具体的key
多级LRU缓存:
- TableCache
- DataBlockCache
- RowCache
详细调用关系: