Heim  >  Artikel  >  Datenbank  >  Eine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung)

Eine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung)

藏色散人
藏色散人nach vorne
2022-12-06 17:00:182817Durchsuche

Dieser Artikel führt Sie in das relevante Wissen über MongoDB ein und stellt die Speicher-Engine in MongoDB vor. Ich hoffe, er wird Ihnen hilfreich sein!

Ein kurzer Rückblick

Das letzte Mal haben wir über Mongodb-Cluster gesprochen, die in „Master-Slave-Cluster“ und „Sharded-Cluster“ unterteilt sind. In Bezug auf die Shards in Sharded-Clustern müssen wir sie gemeinsam überprüfen :

Für
    heiße Daten
  • bestimmte
Shard-Schlüssel

(ein Shard-Schlüssel ist ein Indexfeld oder zusammengesetztes Indexfeld, das in jedem Dokument in der Sammlung vorhanden ist) führt dazu, dass alle Lese- oder Schreibanforderungen bearbeitet werden a Single Bei Datenblöcken oder Shards führt dies dazu, dass ein einzelner Shard-Server überlastet wird und der sich selbst erhöhende Shard-Schlüssel leicht zu Schreibproblemen führt [Empfohlen: MongoDB-Video-Tutorial]

Für
    unteilbare Datenblöcke
  • Bei grobkörnigen Sharding-Schlüsseln
kann es dazu kommen, dass viele Dokumente denselben Sharding-Schlüssel verwenden

In diesem Fall können diese Dokumente nicht in mehrere Datenblöcke aufgeteilt werden, was die gleichmäßige Verteilung der Daten in der Mongodb-Fähigkeit einschränkt

Für
    Abfragehindernisse
Der Shard-Schlüssel steht in keinem Zusammenhang mit der Abfrage

, was zu einer schlechten Abfrageleistung führtWir müssen uns der oben genannten Punkte bewusst sein und bei tatsächlichen Arbeitsproblemen auf ähnliche Probleme stoßen Ich kann versuchen, damit umzugehen. Heute werden wir kurz verstehen, was die Speicher-Engine von Mongodb ist imMemory-Speicher-Engine

Als die Speicher-Engine zum ersten Mal herauskam, wurde standardmäßig die MMAPV1-Speicher-Engine verwendet.

MMAPV1-Engine. Wenn wir uns den Namen ansehen, wissen wir wahrscheinlich, dass sie mmap verwendet und das Prinzip der Linux-Speicherzuordnung verwendet

Die MMAPV1-Engine wird jetzt nicht verwendet, da die

WiredTiger-Speicher-Engine besser ist

. Im Vergleich zu WiredTiger hat sie die folgenden Vorteile:

WiredTiger

Lese- und Schreibvorgangsleistung ist besser

  • WiredTiger kann besser genutzt werden die Verarbeitungsleistung von Multi-Core-Systemen
  • WiredTiger
Die Sperrgranularität ist kleiner

MMAPV1-Engine Bei Verwendung von Sperren auf Tabellenebene ist der Durchsatz begrenzt, wenn auf einer einzelnen Tabelle gleichzeitige Vorgänge ausgeführt werden

Und WiredTiger verwendet Sperren auf Dokumentebene, wodurch die Parallelität und der Durchsatz verbessert werden Komprimierungsalgorithmus , der den Verbrauch von Festplattenressourcen erheblich reduzieren kann

Das Schreibprinzip der WiredTiger-Engine
  • Auf dem obigen Bild können wir sehen, dass WiredTiger
Das Prinzip des Schreibens auf die Festplatte ist ebenfalls sehr einfach

  • Die Anwendungsanforderung kommt an mongodb, mongodb übernimmt die Verarbeitung und speichert das Ergebnis im Cache.

    Wenn der Cache 2 G

    erreicht oder der

    60-Sekunden-Timer abläuft, werden die Daten im Cache geleert Vorsicht, xdm wird wissen, ob es jetzt genau 59 Sekunden sind. Wenn mehr als 1 GB vorhanden sind, wurden die Daten im Cache nicht mit der Festplatte synchronisiert, und Mongodb hängt nicht normal Daten verlieren?

Wir können alle mit unseren Fingern denken:

Wie konnte der Designer von Mongodb diese Situation zulassen, dann muss es eine Lösung geben
    , wie folgt
Wie im Bild oben gezeigt, gibt es eine zusätzlich ein

Journaling-Puffer

Ein Puffer, der Mongodb-Hinzufügungs-, Lösch- und Änderungsanweisungen speichert

Eine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung)

Journaldateien

Ähnlich wie Transaktionsprotokolle in relationalen Datenbanken
  • Der Zweck der Einführung von Journaling besteht darin:
  • Journaling kann die Mongod-B-Datenbank aufgrund der schnellen Wiederherstellung nach unerwarteten Fehlern aktivieren.Journaling-Protokollfunktion ist bereits
    Standard Wenn die Journaling-Funktion aktiviert ist, prüft der Dienst beim Starten der Mongod-Instanz, ob die Daten wiederhergestellt werden müssen
Es kommt also zu keinem Datenverlust in Mongodb, wie oben erwähnt

Außerdem müssen wir hier wissen, dass die Protokollierungsfunktion des Journalings Protokolle schreibt, wenn mongodb Schreibvorgänge ausführen muss, d Wenn der Abrufvorgang ausgeführt wird, wird er nicht im Cache aufgezeichnet, sodass der Lesevorgang keine Auswirkungen hat. Das war's. Wenn es Abweichungen gibt, korrigieren Sie mich bitte

Das obige ist der detaillierte Inhalt vonEine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen