Leveldb源码解读(二)
Leveldb源码解读(二)
  1. 基本组件
1.1 内存管理
有内存频繁创建释放的地方就会有内存池的出现,leveldb也不例外。在im/memtable组件中,会有大量内存创建(数据持续put)和释放(dump到磁盘后内存结束)
基本原理图
先来看看Allocate
再来看看AllocateFallback:
再来看看AllocateAligned
1.2 引用计数
引用计数是一种内存管理方式。在leveldb中,memtable/version等组件,可能被多个线程共享,因此不能直接删除,需要等到没有线程占用时,才能删除。这里可以扩展一下。
1.3 各种Key与Compare
1.3.1 前置知识点
  • SequenceNumber
一个递增的uint64整数,相同key则按照其降序,最大值为