内存中的B-Tree(例如google btree)和LMDB的某些C ++实现之间的性能差异(读/写)是什么(不考虑LMDB的所有功能,如事务,隔离,共享访问等。)?
答案 0 :(得分:5)
其架构师 Howard Chu 的2014 lmdb design presentation涵盖了lmdb
的设计和权衡。
总结一下:lmdb
是一个写时复制,自下而上更新,双缓冲的b-tree,只要与其他注意事项发生冲突,实现总是倾向于简单。
智能设计选择 使其成为最高性能和抗腐败的B树实施之一。
lmdb
依赖底层操作系统进行缓存显然,这些选择意味着lmdb
对复杂情况不友好,例如:
lmdb
支持更简单的多个读者和单个编写器方案完整(超过100页)的演示文稿还有更多内容。以上只是lmdb
精神的总结。
lmdb
被用作突出的开源项目(如Open LDAP和Memcached)中的核心存储引擎,并且在两种情况下都观察到了与替代方案相比的数量级加速,如{{{ 3}}