2017-07-22 3 views
0

Ich habe mich über den Projektionsmechanismus in MongoDB gewundert. Wissen Sie, dass die erforderlichen Felder direkt von der Festplatte oder vom RAM projiziert werden? das gesamte Dokument wird zum ram geholt und dann erfolgt die Projektion oder nur die benötigten Felder werden von der Festplatte in ram geholt?MongoDB Projektionsmechanismus

+0

Es ist eine Datenbank. Idealerweise passiert alles im RAM. Aber die Dinge funktionieren nicht immer optimal. Wenn Sie im Grunde fragen "ganzes Dokument oder nur, was gefragt wurde?" Dann ist es ähnlich wie die Frage "Die ganze Sammlung oder was genau gefragt wurde?" Es wird also deutlicher, dass es genau das ist, wonach ** gefragt wurde. Darüber hinaus wird dies ein sehr weites Thema. –

+0

Ich möchte wissen, dass, wenn ich Projektion in meiner Abfrage für eine Sammlung verwenden, was in Low-Level passiert. Stellen Sie sich vor, es gibt ein Dokument mit 15 Feldern in einer Sammlung. Wenn ich vorschlage, nur 10 der Felder zurückzugeben, wie läuft die Projektion ab? im RAM oder in der Festplatte? hat die MongoDB die 10 angegebenen Felder von der Platte holen oder alle 15 Felder in dem RAM holen und die diese 10 angegebenen kehrt? @NeilLunn –

Antwort

0

MongoDB alle der zuletzt verwendeten Daten hält in RAM.If Ihren Arbeitsdatensatz paßt in RAM dient MongoDB alle Anfragen aus dem Gedächtnis, sonst wird es die Platte trifft auf die Daten zuzugreifen.

Jetzt, wie können Sie überprüfen, ob die Daten aus dem RAM oder der Festplatte abgerufen werden?

  1. Beobachten Sie das Ergebnisfeld bei jeder Abfrage, während Sie den Operator $ explain verwenden. Dies wird Ihnen sagen, wie oft der Leser seine Sperre ausgelöst hat, weil Daten nicht im RAM waren.
  2. Programme wie Mongostat können Ihnen sagen, welche Seitenfehler (wenn Daten von der Festplatte in den RAM ausgelagert werden müssen) auf Ihrer mongoDB-Instanz auftreten.