インデックスをRAMに確実に収める
処理を高速化するには、システムがディスクからインデックスを読み取らないように、インデックスが RAM に完全に収まるようにします。
インデックスのサイズを確認するには、バイト単位でデータを返す db.collection.totalIndexSize()
ヘルパーを使用します。
> db.collection.totalIndexSize() 4617080000
上の例では、インデックス サイズが約 4.3 ギガバイトであることがわかります。このインデックスが RAM に収まるようにするには、その量以上の RAM が使用可能であるだけでなく、ワーキングセットの残りの部分にも RAM が使用可能である必要があります。また、次の点にも注意してください。
複数のコレクションがあって使用する場合は、すべてのコレクションのすべてのインデックスのサイズを考慮する必要があります。インデックスとワーキングセットは同時にメモリに収まる必要があります。
インデックスがメモリに収まる必要がない場合も限られます。 「RAM に最近の値のみを保持するインデックスを参照してください。
RAM に最近の値のみを保持するインデックス
どのような場合でも、インデックスは RAM に完全に収まる必要はありません。インデックス付きフィールドの値が挿入のたびに増加し、ほとんどのクエリが最近追加されたドキュメントを選択する場合、MongoDB は、RAM 内の最新の値または「右端」の値を保持するインデックスの部分しか維持する必要はありません。そのため、読み取りおよび書き込み操作でインデックスを効率的に使用でき、インデックスのサポートに必要な RAM の容量を最小限に抑えることができます。