1)耐久性の観点から、MongoDB Javaドライバー(Morphiaが使用している)にどの戦略を使用するかを指示できます。NONE
(接続の問題でさえエラーを引き起こしません)最大FSYNC_SAFE
(データは間違いなくディスクに書き込まれます。)内部の詳細については、 http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/
2)データ全体がメモリにマップされます(そのため、32ビットエディションには2GBのサイズ制限があります)が、実際にロードされるのは必要な場合のみです。 MongoDBは、mmapを使用してそれをオペレーティングシステムに任せます。より多くのRAMが利用可能である限り、MongoDBは必要なすべてのデータをRAMにロードして、クエリを非常に高速にします。使用可能なメモリがなくなった場合、古いものを交換するのはオペレーティングシステム次第です。これには、MongoDBプロセスを再起動しても、データがメモリに保持されるという優れた効果があります。サーバー自体を再起動した場合にのみ、データをディスクから再度フェッチする必要があります。欠点は、データベースプロセスが、オペレーティングシステムと比較して、最初に何をスワップアウトする必要があるかを少しよく理解している可能性があることです。WindowsでMongoDBを使用しておらず、MacまたはLinuxでそのメッセージを確認していません(まだ)、ただし、オペレーティングシステムがそれを処理する必要があります(必要に応じて情報を自動的に交換します)。ドライバーをJOURNAL_SAFE
に設定してみましたか (データのセキュリティと速度の間の適切な妥協点となるはずです)?この設定では、MongoDBプロセスが停止しても、データが失われることはありません。
3)一般に、MongoDBは可能な限り多くの使用可能なメモリを使用するように構築されていますが、 http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ -(仮想)Linuxサーバーを使用しているため、テストしていません。