LMDB窗口数据库的最大大小



当我将最大数据库大小设置为5G时,在windows上,即使我只插入一小段数据,最终的数据库文件大小也将变为5G。但在linux上运行良好,最终的数据库大小与我插入的数据量有关。

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

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

Windows和linux也是如此。我需要为窗户做一些不同的事情吗?

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

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

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

最新更新