3

たとえば、Windows で最大 db サイズを 5G に設定すると、小さなデータを 1 つ挿入しただけでも、最終的な db ファイル サイズは 5G になります。しかし、Linuxでは問題なく動作します。最終的なdbサイズは、挿入するデータの数に関連しています。

最大データベースサイズを設定するために使用したAPIは次のとおりです

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

Windows と Linux で同じです。Windows では別のことをする必要がありますか?

4

1 に答える 1

4

これが Windows でのメモリ マップ ファイルの動作です。サイズ xxGB のマップが必要な場合、Windows ではファイルのサイズが xxGB である必要があります。ファイルが元々指定されたサイズより小さかった場合、Windows はファイル自体を拡張します。これを回避する方法はありません。

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

NTFS はスパース ファイルをサポートできますが、テストの結果、Windows のスパース ファイルのサポートは通常のファイルよりも大幅に遅いことが判明したため、LMDB はそれを使用しません。

于 2015-11-06T16:56:39.370 に答える