加载中...

LMDB(Lightning Memory-Mapped Database)是由 OpenLDAP 项目的 Howard Chu 开发的嵌入式键值数据库,以 C 编写,代码仅数千行,最初为替换 OpenLDAP 的 Berkeley DB 后端而生。
LMDB 将整个数据库文件 mmap 进进程地址空间,读操作直接访问映射内存,零拷贝、无需缓存管理。数据组织为写时复制(copy-on-write)的 B+ 树:修改不覆盖旧页,而是写新页并原子切换根指针,因此天然支持 MVCC——读事务看到一致快照且完全不加锁,写事务串行执行。崩溃后无需恢复过程,重启即用,不需要 WAL。
优点:读性能与并发读扩展性极佳,库极小,可靠性高。缺点:写吞吐受单写者限制;数据库大小需预设映射上限;空间回收依赖空闲页复用,文件不自动收缩。
OpenLDAP、Monero 区块链存储、Caffe 训练数据、许多语言的持久化缓存库都采用 LMDB。

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