当我将最大数据库大小设置为例如 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/