例如,当我将最大数据库大小设置为5G时,在windows上,即使我只插入一小段数据,最终的数据库文件大小也将变为5G。但在linux上它工作得很好,最终的数据库大小与我插入的数据量有关。
下面是我用来设置最大数据库大小的api
rc = ::mdb_env_set_mapsize(env, 5 * 1024 * 1024 * 1024);
Windows和linux也是如此。我需要为windows做一些不同的事情吗?
发布于 2015-11-07 00:56:39
这就是内存映射文件在Windows上的工作方式-如果你想要一个大小为xxGB的映射,Windows要求该文件的大小为xxGB。如果文件最初小于指定的大小,Windows会增加文件本身的大小;这是没有办法的。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366542%28v=vs.85%29.aspx
NTFS可以支持稀疏文件,但在测试中我们发现Windows稀疏文件支持速度比普通文件慢得多,因此LMDB不使用它。
https://stackoverflow.com/questions/33508305
复制相似问题