加载中...

MemTable 是 LSM 树架构数据库中位于内存的有序数据结构,承接所有新写入。写请求先追加到 WAL 保证持久性,再插入 MemTable;读请求则最先查询 MemTable,因为它包含最新数据。
MemTable 需要支持高并发的有序插入与查找,常见实现是跳表(LevelDB、RocksDB 默认),也有红黑树、哈希跳表等变体。RocksDB 允许通过 memtable factory 更换实现。
当 MemTable 达到大小阈值(如 64MB)后被冻结为不可变 MemTable(immutable memtable),由后台线程刷写(flush)为 L0 层的 SSTable 文件,同时对应的 WAL 即可回收。新写入则进入新建的活跃 MemTable,写入过程不停顿。
MemTable 越大,刷盘与 L0 文件数越少、写放大越低,但恢复时需重放的 WAL 越长,内存占用也越高,是 LSM 调优中的重要参数。

登录 后参与讨论
暂无讨论,来发表第一条评论吧