linux - LMDB windows 数据库的最大大小

标签 linux windows lmdb

当我将最大数据库大小设置为例如 5G 时,在 Windows 上最终的数据库文件大小将变为 5G,即使我只插入一小段数据。但在 Linux 上它工作正常,最终的数据库大小与我插入的数据量有关。

这是我用来设置最大数据库大小的 api

rc =::mdb_env_set_mapsize(env, 5 * 1024 * 1024 * 1024);

同样适用于 Windows 和 Linux。我需要为 Windows 做一些不同的事情吗?

最佳答案

这就是内存映射文件在 Windows 上的工作方式 - 如果您想要一个大小为 xxGB 的映射,Windows 要求文件的大小为 xxGB。如果文件最初小于指定大小,Windows 会自行增大文件;没有办法解决这个问题。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366542%28v=vs.85%29.aspx

NTFS 可以支持稀疏文件,但在测试中我们发现 Windows 对稀疏文件的支持明显比普通文件慢,所以 LMDB 没有使用它。

关于linux - LMDB windows 数据库的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508305/

相关文章:

c - 套接字权限ubuntu

linux - 通过 ssh 的 HG Workbench 工作目录?

linux - 指向 mysql-includes,尝试配置 sphinx 搜索

c++ - ADSi::setinfo() 无法使用 C++ 在 AD 中设置值?

linux - 如何在 linux 中放大和缩小终端控制台

python - 如何使用批处理文件 (.bat) 使用 ACTIVATED virtualenv 运行 django 服务器

c++ - 我的应用程序创建的 Windows CE/嵌入式 C++ 非 volatile 文件在重新启动时被删除

c++ - LMDB:在有限的内存系统中打开大型数据库

java - 如何用 Java 打开 LMDB 数据库?