在这里发帖,因为我找不到任何lmdb键值存储的论坛。
子数据库是否有限制?并发打开的子数据库的合理数量是多少?
我希望有大约200个数据库,这看起来很多,显然表明我的模型是错误的。我想可以在key本身中重新建模和嵌入每个db的id,只保留一个db,但这样我就有了更长的key,而且如果需要的话,我也不能删除数据库。
不过,我感兴趣的是,LMDB是否已经为键使用了某种内部前缀。任何如何解决这个问题的建议都很感谢。
发布于 2015-03-16 05:52:27
如果您阅读了mdb_env_set_maxdbs的文档。
目前,中等数量的插槽是便宜的,但大量的插槽变得昂贵:每个事务7-120个单词,并且每个mdb_dbi_open()对打开的插槽进行线性搜索。
http://www.lmdb.tech/doc/group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc
最好的方法是测试函数调用mdb_dbi_open的性能,看看它是否可以接受。
发布于 2016-09-22 06:03:46
不必每次都调用mdb_dbi_open,而是保留您自己的映射,其中包含从mdb_dbi_open返回的数据库句柄的数据库名称。在程序的生命周期中重用这些句柄。这将允许您在一个环境中拥有多个数据库,并避免使用mdb_dbi_open带来的开销。
https://stackoverflow.com/questions/28933784
复制相似问题