LMDB 中的子数据库是否有限制



在这里发帖,因为我找不到任何关于 lmdb 键值存储的论坛。

子数据库有限制吗?并发打开的子数据库的合理数量是多少?

我想要~200个数据库,这似乎很多,并且清楚地表明我的模型是错误的。我想可以在密钥本身中重塑和嵌入每个数据库的 id,并只保留一个数据库,但这样我就有更长的密钥,如果需要,我也无法删除数据库。

我很感兴趣,但如果 LMDB 已经为密钥使用某种内部前缀。如何解决这个问题的任何建议都值得赞赏。

不要每次都调用mdb_dbi_open,而是保留自己的映射,其中包含从mdb_dbi_open返回的数据库句柄的数据库名称。在程序的生存期内重复使用这些句柄。这将允许您在一个环境中拥有多个数据库,并防止mdb_dbi_open开销。

如果您阅读了mdb_env_set_maxdbs的文档。

目前,中等数量的老虎机

很便宜,但大量的老虎机变得昂贵:每笔交易 7-120 个单词,每个 mdb_dbi_open() 对打开的老虎机进行线性搜索。

http://www.lmdb.tech/doc/group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc

了解情况的最佳方法是测试函数调用mdb_dbi_open性能,以查看它是否可以接受。

最新更新