2017-07-22 3 views
0

。 必要なフィールドがディスクから直接またはRAMから投影されていることをご存知ですか? すべての文書全体をRAMに取り込まれ、その後、突起が起こる又は唯一の必須フィールドは、RAMディスクからフェッチされ?MongoDBの投射機構

+0

これは、データベースです。理想的には**すべて**はRAMで発生します。しかし、物事は常に理想的には機能しません。基本的に「文書全体か、尋ねられた内容だけ」を求めているのですか?それから、「全コレクションか、何を求められたのか」と尋ねるのが好きです。だからもっと明らかになったのは**のために求められたものだけです**。それを超えて、これは非常に広いテーマになります。 –

+0

コレクションのクエリで投影を使用すると、低レベルで何が起こっているのかを知りたいと思います。 コレクションに15個のフィールドを持つ文書があるとします。フィールドの10個だけを返すように指定した場合、投影はどのように行われますか?ラムやディスクの中に? MongoDBはディスクから指定された10個のフィールドを取得するか、15個のフィールドすべてをRAMにフェッチし、指定されたフィールドをRAMに戻しますか? @NeilLunn –

答えて

0

のMongoDBは、作業データセットがRAMに収まるRAM.Ifで最近使用したデータのすべてを保持し、MongoDBはそうでなければデータにアクセスするために、ディスクをヒットする、メモリからすべてのクエリを提供しています。データはRAMまたはディスクから取得された場合

今、あなたはどのように確認できますか?

  1. $ explain演算子を使用している間は、任意のクエリでyieldsフィールドを観察します。これは、データがRAMにないため、リーダーがロックを何回取得したかを示します。
  2. (データがディスクからRAMにページングする必要がある場合)mongostatようなプログラムは、あなたのMongoDBインスタンス上で起こっているかのページフォルトをご紹介することができます。