1

3つのインデックスと約500列の行のMioでmyisamを何年も使用した後、高速読み取りパフォーマンスのためにmongodbにインデックスをメモリに格納するように「強制」する方法を考えています。

一般に、これは単純な構造化テーブルであり、すべてのクエリはWHERE index1=..またはindex2=...またはindex3=..(myisam)であり、mongodbでも非常に単純です。mongodbがインデックスとRAMを独自に管理していると便利です。ただし、そうなるかどうか、mongodbがインデックスでこれらのクエリを高速化する方法についてはわかりません。

ありがとう

4

2 に答える 2

2

mongodbがインデックスとRAMを独自に管理していると便利です。

MongoDBはRAMをまったく管理しません。これはメモリマップトファイルを使用し、基本的にすべてが常にRAMであると「ふり」します。

代わりに、オペレーティングシステムは、RAMに保持されるオブジェクトを管理する責任があります。通常、LRUベースです。

インデックスのサイズを確認することをお勧めします。これらのインデックスをすべてRAMに保持できない場合、MongoDBのパフォーマンスが低下する可能性があります。

ただし、そうなるかどうか、mongodbがインデックスでこれらのクエリを高速化する方法についてはわかりません。

MongoDBは、対象インデックスを使用してDBから直接取得できます。ただし、返されるフィールドについては非常に具体的にする必要があります。インデックスの一部ではないフィールドを含めると、「インデックスのみ」のクエリは返されません。

デフォルトの動作ではすべてのフィールドが含まれるため、特定のクエリを確認し、「インデックスのみ」を許可するように適切な変更を加える必要があります。これらのクエリには、が含まれていないことに注意してください_id。これにより、今後問題が発生する可能性があります。

于 2012-06-04T23:43:03.347 に答える
1

インデックスをメモリに保存するためにmongoを「強制」する必要はありません。インデックスは、使用時にメモリに取り込まれ、OSがインデックスを開始するまでメモリに残ります。

MongoDBは、可能な場合、カバーされたインデックスを自動的に使用します。

于 2012-06-04T21:17:17.237 に答える