プロジェクトで MongoDB の問題に遭遇しましたが、何日経っても解決できません。専門家からアドバイスを得ることができればと思っています。
具体的な問題は、データベースが長期間アクセスされない場合、データベースの最初のクエリには長い時間がかかりますが、その後のクエリは非常に高速になるということです。
詳細:
現在考えられている理由:
リーリー必要なサポート:
リーリーphpcn_u15822017-05-02 09:28:08
あなたが指摘した問題はワーキングセットに関連しています。
1. ワーキングセットとは何ですか?
MongoDB のメモリ管理における重要な概念。メモリ管理では、頻繁にアクセスされるデータ セットと関連インデックスをメモリに配置するようにしてください。
2. ワーキングセットをメモリに配置するには?
あなたの記述では、実際には、ワーキングセットを事前に予熱してメモリに配置する必要があることを意味します(プリロードまたは予熱)。具体的にはどうすればいいのでしょうか?タッチ (MMAP エンジン) について言及しましたが、後続のバージョン (WT エンジン) でそれを実装するにはどうすればよいですか?
リレーショナル データベースの場合、よく使用される方法は select * です。パフォーマンス テストを行う場合、多くの場合、良好な結果を達成するために、事前に Select ステートメントのバッチが実行され、メモリがウォームアップされます。
MongoDB では、次のことを考慮できます:
1) カバーされたインデックスをビジネス クエリで直接使用できる場合、またはインデックスをウォームアップする必要がある場合:
db.collection.find({}, {"_id" : 0, "field_a" : 1, "field_b" : 1}).hint({"field_a" : 1, "field_b" : 1}) .explain()
2) ワーキングセットをウォームアップする必要がある場合、前提として、コレクション内のどのデータに頻繁に (通常は一定期間) アクセスする必要があるかを把握し、そのコレクションに対して上記と同じ方法を使用します。この時期のウォームアップ方法。
違いは、インデックスの予熱はすべてのインデックスを予熱するため、クエリ条件は {} ですが、ワーキング セットの予熱はコレクション内のデータの特定の部分のみを予熱するため、クエリ条件は条件である可能性があります。時間範囲に関係します。
ご参考までに。
MongoDB を愛してください!楽しむ!
MongoDB 中国語コミュニティ深センユーザーカンファレンス
今週の土曜日、予約をしましょう
詳細については
を入力してください