888*_*box 3 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不使用它。
| 归档时间: |
|
| 查看次数: |
3763 次 |
| 最近记录: |