首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LMDB增加map_size

LMDB增加map_size
EN

Stack Overflow用户
提问于 2015-08-04 23:21:18
回答 1查看 4.5K关注 0票数 2

我正在使用LMDB++ (LMDB的C++包装器),得到了以下错误:

terminate called after throwing an instance of 'lmdb::map_full_error' what(): mdb_put: MDB_MAP_FULL: Environment mapsize limit reached

一些googling告诉我,默认的map_size在LMDB中设置得很低。我如何着手增加map_size?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-11 16:44:36

默认的LMDB映射大小是10 MiB,对于大多数用途来说确实太小了。

要使用C++包装器设置LMDB映射大小,您应该在创建LMDB环境之后并在打开环境或创建事务之前立即调用lmdb::env#set_mapsize()

下面是一个将映射大小增加到1 GiB的基本示例:

代码语言:javascript
复制
/* Create and open the LMDB environment: */
auto env = lmdb::env::create();
env.set_mapsize(1UL * 1024UL * 1024UL * 1024UL);
env.open("./example.mdb", 0, 0664);

如果您正在计算大的映射大小,如上面的示例所示,请注意在整数文本中包含适当的类型后缀(ULULL),否则您可能会遇到无声的整数溢出,因此会奇怪为什么映射大小没有增加到您预期的水平。

还请参阅LMDB的底层C函数mdb_env_set_mapsize()的文档,以获得关于映射大小如何工作的权威单词。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31820976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档