LMDB最大数据库窗口

时间:2015-11-03 20:19:49

标签: linux windows lmdb

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

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

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

Windows和Linux也是如此。我是否需要为Windows做一些不同的事情?

1 个答案:

答案 0 :(得分:4)

内存映射文件在Windows上的工作原理 - 如果你想要一个大小为xxGB的地图,Windows要求文件的大小为xxGB。如果文件最初小于指定的大小,Windows会增加文件本身;没有办法解决这个问题。

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

NTFS可以支持稀疏文件,但在测试中我们发现Windows稀疏文件支持明显慢于普通文件,因此LMDB不能使用它。