原文作者:胡刘郏
原文链接:https://www.huliujia.com/blog/c5e8646cb4765da867b3936b2bae62843bded7e5
简介
MemTable是LevelDB在内存中的缓存库。用户写入数据时,LevelDB会先把数据写入到MemTable中。如果MemTable写满了,就会新建一个MemTable进行写入。后台再异步把旧的MemTable压缩写到磁盘上。因为旧的MemTable不允许写入了,所以也被称为Immutable MemTmable。
MemTable的成员变量
KeyComparator comparator_;
int refs_;
Arena arena_;
Table table_;
- comparator_:是一个比较器,用于比较key的大小,这个没啥好聊的。
- refs_: 当前MemTable对象被引用数,如果为0说明对象未被使用。
- arena_:内存分配器,具体实现可以看LevelDB源码解析(1) Arena内存分配器
- table_: 是一个SkipList对象,具体实现可以看LevelDB源码解析(2) SkipList(跳跃表)