LMDB 增加 map_size
LMDB increase map_size
我在使用 LMDB++(LMDB 的 C++ 包装器)时遇到了这个错误:
terminate called after throwing an instance of 'lmdb::map_full_error'
what(): mdb_put: MDB_MAP_FULL: Environment mapsize limit reached
一些谷歌搜索告诉我默认的 map_size 在 LMDB 中设置得很低。我该如何增加 map_size?
默认的 LMDB 映射大小为 10 MiB,对于大多数用途来说确实太小了。
要使用 C++ wrapper 设置 LMDB 映射大小,您应该在创建 LMDB 环境之后并在打开环境或创建事务之前立即调用 lmdb::env#set_mapsize()
。
这是一个将映射大小增加到 1 GiB 的基本示例:
/* Create and open the LMDB environment: */
auto env = lmdb::env::create();
env.set_mapsize(1UL * 1024UL * 1024UL * 1024UL);
env.open("./example.mdb", 0, 0664);
如果您正在计算如上例所示的大地图大小,请注意在整数文字中包含适当的类型后缀(UL
或 ULL
),否则您可能会遇到无声整数溢出,想知道为什么地图大小没有增加到您的预期。
另请参阅 LMDB 的底层 C 函数的文档mdb_env_set_mapsize()
,了解地图大小如何工作的权威词汇。
我在使用 LMDB++(LMDB 的 C++ 包装器)时遇到了这个错误:
terminate called after throwing an instance of 'lmdb::map_full_error'
what(): mdb_put: MDB_MAP_FULL: Environment mapsize limit reached
一些谷歌搜索告诉我默认的 map_size 在 LMDB 中设置得很低。我该如何增加 map_size?
默认的 LMDB 映射大小为 10 MiB,对于大多数用途来说确实太小了。
要使用 C++ wrapper 设置 LMDB 映射大小,您应该在创建 LMDB 环境之后并在打开环境或创建事务之前立即调用 lmdb::env#set_mapsize()
。
这是一个将映射大小增加到 1 GiB 的基本示例:
/* Create and open the LMDB environment: */
auto env = lmdb::env::create();
env.set_mapsize(1UL * 1024UL * 1024UL * 1024UL);
env.open("./example.mdb", 0, 0664);
如果您正在计算如上例所示的大地图大小,请注意在整数文字中包含适当的类型后缀(UL
或 ULL
),否则您可能会遇到无声整数溢出,想知道为什么地图大小没有增加到您的预期。
另请参阅 LMDB 的底层 C 函数的文档mdb_env_set_mapsize()
,了解地图大小如何工作的权威词汇。