Inhaltsverzeichnis
Was ist Wiredtiegel und warum es wichtig ist?
Wie WiredTiger Daten speichert: B-Bäume und Kontrollpunkte
In-Memory vs. On-Disk-Struktur
Checkpointing erklärt
Parallelität und Isolation: MVCC in Aktion
Speicherungseffizienz: Komprimierung und Indexierung
Datenkomprimierungsoptionen
Indexverhalten
WiredTiger -Cache: Speicherverbrauch verwalten
Protokollierung und Haltbarkeit: Schreibschreiberprotokoll (Wal)
Wann sollten Sie Alternativen in Betracht ziehen?
Letzte Gedanken
Heim Datenbank MongoDB Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Aug 04, 2025 am 05:49 AM
mongodb

WiredTiger ist seit Version 3.2 die Standard -Speicher -Engine von MongoDB, die hohe Leistung, Skalierbarkeit und moderne Funktionen bietet. 1. Es verwendet Verriegelung auf Dokumentenebene und MVCC für hohe Parallelität und ermöglicht Lesevorgänge und schreibt, um fortzufahren, ohne sich gegenseitig zu blockieren. 2. Die Daten werden unter Verwendung von B-Bäumen gespeichert, wobei bei periodischen Kontrollpunkten (standardmäßig alle 60 Sekunden) in Memory-Modifikationen auf Festplatten gespült werden, um eine schnelle Absturzwiederherstellung zu ermöglichen, indem nur Post-Checkpoint-Protokolle wiederholt werden. 3. MVCC sorgt für konstante Schnappschüsse, sodass langlebige Abfragen nicht von Schreibvorgängen blockiert werden und umgekehrt. 4. Die integrierte Komprimierung (Snappy, ZLIB, ZSTD) reduziert die Speicherung und die E/A für Sammlungen und Indizes, wodurch die Cache-Effizienz verbessert wird. 5. WiredTiger verwaltet seinen eigenen Cache (Standard: 50% des RAM minus 1 GB), der Daten, Indizes und Metadaten speichert. Die Antriebsgröße ist von entscheidender Bedeutung, um übermäßige Festplatten -E/A zu vermeiden. 6. Das Schreibbeinprotokoll (Wal) garantiert die Haltbarkeit durch Protokollierung, bevor sie angewendet werden, wobei FSYNC-Intervalle alle 100 ms; J: True sorgt für die Synchronisierung von Journal für Sicherheit, während J: False Trades Haltbarkeit für Geschwindigkeit. 7. Alternativen können für Systeme mit niedrigem Memory (

Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Die Leistung und Skalierbarkeit von MongoDB hängen stark von seiner Speichermotor ab, und WiredTiger ist der Standard seit MongoDB 3.2. Wenn Sie eine moderne Version von MongoDB verwenden, können Sie die Wahrscheinlichkeit bereits WiredTiger verwenden. Wenn Sie also verstehen, wie sie unter der Haube funktioniert, können Sie die Leistung optimieren, Ressourcen verwalten und Probleme beheben.

Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Lassen Sie uns aufschlüsseln, was WiredTiger leistungsfähig macht und wie es Daten hinter den Kulissen behandelt.


Was ist Wiredtiegel und warum es wichtig ist?

WiredTiger ist eine leistungsstarke, skalierbare Speicher-Engine, die für Workloads mit hoher Parallelität und großen Datensätzen entwickelt wurde. Im Gegensatz zum älteren MMAPV1-Engine bringt WiredTiger moderne Datenbankfunktionen wie Dokumentsteuerung, Komprimierung und Crash-Safe-Schreibvorgänge mit Dokumentenebene mit.

Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Schlüsselvorteile:

  • Sperrung auf Dokumentebene (gegen MMAPV1-Ebene auf Sammlungsniveau) → höhere Parallelität
  • Snapshots und MVCC (Mehrfachversionskontrolle) → Konsistente Lesevorgänge ohne Blockierung von Schreibvorgängen
  • Konfigurierbare Komprimierung → Reduzierter Speicherbootabdruck
  • Schreibwiederholungsprotokollierung (Wal) → Haltbarkeit und Absturzwiederherstellung

Es ist so konstruiert, dass es auf moderne Hardware effizient skaliert wird, insbesondere auf Systemen mit mehreren Kernen und SSDs.

Verständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive

Wie WiredTiger Daten speichert: B-Bäume und Kontrollpunkte

In seinem Kern verwendet WiredTiger eine B-Tree-Struktur (ausgewogener Baum), um Daten auf der Festplatte und im Speicher zu organisieren.

In-Memory vs. On-Disk-Struktur

  • Wenn Sie ein Dokument einfügen oder aktualisieren, geht es zunächst in den Memory B-Tree ein.
  • Änderungen werden im WiredTiger -Protokoll (Wal) zur Haltbarkeit verfolgt.
  • In regelmäßigen Abständen erstellt WiredTiger einen Checkpoint - eine konsistente Momentaufnahme der an die Festplatte geschriebenen Daten.

Das heisst:

  • Lesevorgänge können entweder auf den In-Memory-Baum (schnell) oder auf den letzten Kontrollpunkt (auf der Festplatte) zugreifen.
  • Schreibvorgänge sind dank MVCC und Checkpoints nicht blockiert.

Checkpointing erklärt

Checkpoints sind entscheidend für die Wiederherstellung und Leistung:

  • Sie treten standardmäßig alle 60 Sekunden auf (konfigurierbar).
  • Während eines Checkpoint werden schmutzige Seiten (im Speicher geändert) in einem konsistenten Zustand auf Scheibe gespült.
  • Nach einem Absturz repariert MongoDB nur die Protokolleinträge nach dem letzten Kontrollpunkt.

Dies verkürzt die Erholungszeit im Vergleich zur Wiederholung des gesamten OPlogs oder des gesamten Journals signifikant.


Parallelität und Isolation: MVCC in Aktion

WiredTiger verwendet MVCC (Mehrfachversionskontrolle), um die gleichzeitigen Lesevorgänge zu ermöglichen, ohne sich gegenseitig zu blockieren.

So funktioniert es:

  • Jeder Operation wird zu einem Zeitpunkt in einem Schnappschuss der Datenbank ausgeführt.
  • Die Leser sehen eine konsistente Ansicht, auch wenn Schreibvorgänge stattfinden.
  • Autoren blockieren die Leser nicht und umgekehrt (solange sie nicht dasselbe Dokument ändern).

Zum Beispiel:

  • Eine langjährige Analytik-Abfrage wird nicht durch eingehende Einsätze blockiert.
  • Zwei Updates für verschiedene Dokumente können parallel fortgesetzt werden.

Dies ist ein großer Gewinn für Anwendungen, die einen hohen Durchsatz und eine geringe Latenz erfordern.


Speicherungseffizienz: Komprimierung und Indexierung

Eine der herausragenden Funktionen von WiredTiger ist die integrierte Komprimierung , die den Speicherplatz spart und die E/A reduziert.

Datenkomprimierungsoptionen

WiredTiger -Unterstützung:

  • Snappy (Standard): schnelle, mäßige Komprimierung
  • ZLIB : höhere Kompression, langsamer
  • ZSTD (aus MongoDB 4.2): ausgewogene Geschwindigkeit und Verhältnis

Komprimierung wird angewendet auf:

  • Sammlungen (Daten)
  • Indizes

Sie können die Komprimierung pro Sammlung konfigurieren:

 db.createcollection ("logs", {
  StoresEngine: {
    WiredTiger: {
      configString: "block_compressor = zstd"
    }
  }
})

Indexverhalten

  • Alle Indizes verwenden dieselbe Speichermotor.
  • Indexschlüssel werden ebenfalls komprimiert.
  • Sekundäre Indizes werden schrittweise aktualisiert und profitieren von demselben Parallelitätsmodell.

? TIPP: Komprimierte Indizes reduzieren den Speicherdruck im WiredTiger -Cache , sodass mehr heiße Daten im RAM bleiben können.


WiredTiger -Cache: Speicherverbrauch verwalten

WiredTiger verwaltet seinen eigenen In-Memory-Cache , der vom Dateisystem-Cache getrennt ist.

Standardmäßig:

  • Die Cache -Größe beträgt 50% des RAM minus 1 GB , der bei 1 TB begrenzt ist.
  • Es gilt:
    • Zuletzt verwendete Daten (Arbeitssatz)
    • Indizes
    • Interne Metadaten

Sie können es in mongod.conf einstellen:

 Lagerung:
  WiredTiger:
    EngineConfig:
      configString: "cache_size = 4g"

⚠️ Warnung: Setzen Sie es nicht zu hoch. Lassen Sie Platz für den OS -Dateisystem -Cache und andere Prozesse.

Wenn Ihr Arbeitssatz die Cache -Größe überschreitet, werden Sie mehr Abfragen von Festplatten -E/A und langsameren Abfragen sehen.


Protokollierung und Haltbarkeit: Schreibschreiberprotokoll (Wal)

WiredTiger verwendet ein Write-Ahead-Protokoll (Wal), um die Haltbarkeit zu gewährleisten:

  • Jedes Schreiben wird zuerst in das Protokoll geschrieben.
  • Die Protokolle werden standardmäßig alle 100 ms ( commit_timestamp_frequency ) fsynt .
  • Dies garantiert, dass auch wenn MongoDB abfällt, keine engagierten Daten verloren gehen.

Das Protokoll wird in dbPath unter journal/ gespeichert.

Während Checkpoints regelmäßig Daten auf die Festplatte schreiben, sorgt der Wal sicher, dass die Checkpoints eine körnige Haltbarkeit sorgt.

Sie können die Haltbarkeit im Vergleich zu Leistung einstellen:

  • Set j: true auf Schreibvorgängen für garantierte Journal -Synchronisierung.
  • Oder verwenden Sie j: false für einen höheren Durchsatz (aber das Risiko eines geringfügigen Datenverlusts beim Absturz).

Wann sollten Sie Alternativen in Betracht ziehen?

Während WiredTiger für die meisten Anwendungsfälle hervorragend ist, ist es nicht immer die beste Passform.

Vermeiden oder überdenken, wenn:

  • Sie sind auf sehr niedrigen Memory-Systemen (
  • Sie müssen in Ruhe mit älteren MongoDB-Versionen verschlüsselt werden : Nur Enterprise bietet native Verschlüsselung (obwohl die Verschlüsselung auf Dateisystemebene funktioniert).
  • Sie migrieren von MMAPV1 und haben spezifische Leistungserwartungen (Benchmark zuerst).

Es gibt auch eine In-Memory-Speicher-Engine (nur Unternehmen), die alle Daten in RAM für eine ultra-niedrige Latenz hält-die für Caching- oder Echtzeitanalysen verwendet wird.


Letzte Gedanken

WiredTiger ist eine robuste, moderne Speicher -Engine, die heute die meisten MongoDB -Bereitstellungen mitwirkt. Die Kombination aus Parallelität, Komprimierung und Absturzsicherheit macht es ideal für alles, von kleinen Apps bis hin zu groß angelegten verteilten Systemen.

Um das Beste daraus herauszuholen:

  • Cache -Nutzung überwachen ( db.serverStatus().wiredTiger.cache )
  • Tunekomprimierung basierend auf Ihrem E/A-VS.-CPU-Kompromiss
  • Checkpoint und Journalverhalten für die Katastrophenwiederherstellung verstehen
  • Größe Ihren RAM für Cache und Systemanforderungen angemessen Größe

Es ist keine Magie - aber mit dem richtigen Verständnis ist es ein leistungsstarkes Werkzeug in Ihrem MongoDB -Toolkit.

Wenn Sie MongoDB nach 3.2 verwenden, profitieren Sie im Grunde genommen bereits von WiredTiger. Jetzt wissen Sie wie .

Das obige ist der detaillierte Inhalt vonVerständnis von MongoDB -Speichermotoren: WiredTiger Deep Dive. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verschiedene Möglichkeiten, Dokumente in MongoDB -Sammlungen zu aktualisieren Verschiedene Möglichkeiten, Dokumente in MongoDB -Sammlungen zu aktualisieren Jun 04, 2025 pm 10:30 PM

Zu den Methoden zum Aktualisieren von Dokumenten in MongoDB gehören: 1. Verwenden Sie UpdateOne- und UpdateMany -Methoden, um grundlegende Updates durchzuführen; 2. Verwenden Sie Operatoren wie $ set, $ inc und $ push, um erweiterte Updates durchzuführen. Mit diesen Methoden und Betreibern können Sie Daten in MongoDB effizient verwalten und aktualisieren.

So sehen Sie alle Datenbanken in MongoDB an So sehen Sie alle Datenbanken in MongoDB an Jun 04, 2025 pm 10:42 PM

Die Möglichkeit, alle Datenbanken in MongoDB anzuzeigen, besteht darin, den Befehl "showdbs" einzugeben. 1. Dieser Befehl zeigt nur nicht leere Datenbanken an. 2. Sie können die Datenbank über den Befehl "Verwendung" wechseln und Daten einfügen, damit sie angezeigt werden. 3. Achten Sie auf interne Datenbanken wie "Lokal" und "Konfiguration". 4. Bei Verwendung des Treibers müssen Sie die Methode "ListDatabases ()" verwenden, um detaillierte Informationen zu erhalten. 5. Der Befehl "db.stats ()" kann detaillierte Datenbankstatistiken anzeigen.

Was sind die Grenzen der kostenlosen Angebote von MongoDB (z. B. auf Atlas)? Was sind die Grenzen der kostenlosen Angebote von MongoDB (z. B. auf Atlas)? Jul 21, 2025 am 01:20 AM

Die kostenlose Hierarchie von Mongodbatlas hat viele Einschränkungen bei der Leistung, Verfügbarkeit, Verwendungsbeschränkungen und -speicher und ist für Produktionsumgebungen nicht geeignet. Erstens haben der M0-Cluster-CPU-Ressourcen mit nur 512 MB Speicher und bis zu 2 GB Speicherplatz, was es schwierig macht, Echtzeitleistung oder Datenwachstum zu unterstützen. Zweitens das Fehlen von Architekturen mit hoher Verfügbarkeit wie Multi-Knoten-Replikat-Sets und automatisches Failover, was zu einer Unterbrechung der Service während der Wartung oder des Misserfolgs führen kann. Darüber hinaus sind die stündlichen Lese- und Schreibvorgänge begrenzt, die Anzahl der Verbindungen und die Bandbreite sind ebenfalls begrenzt und die aktuelle Grenze kann ausgelöst werden. Schließlich ist die Sicherungsfunktion begrenzt und die Speichergrenze ist aufgrund der Indexierung oder des Dateispeichers leicht erschöpft, sodass sie nur für Demonstrationen oder kleine persönliche Projekte geeignet ist.

Betriebsbefehle zum Sortieren von Dokumenten in der MongoDB -Sammlung Betriebsbefehle zum Sortieren von Dokumenten in der MongoDB -Sammlung Jun 04, 2025 pm 10:27 PM

In MongoDB können Sie die Sort () -Methode verwenden, um Dokumente in einer Sammlung zu sortieren. 1. Grundnutzung: Sortieren Sie, indem Sie Felder und Sortierreihenfolge angeben (1 ist aufsteigend und -1 absteigt), wie z. B. db.products.find (). 2. Erweiterte Verwendung: Es kann nach mehreren Feldern sortiert werden, wie z. B. db.products.find (). Sort ({Kategorie: 1, Preis: -1}). 3.. Leistungsoptimierung: Verwenden von Indexierung, Vermeidung von Übersortieren und Paging -Sortierungen kann die Effizienz verbessern, wie z.

Was ist Gridfs und wann sollte es zum Speichern großer Binärdateien in MongoDB verwendet werden? Was ist Gridfs und wann sollte es zum Speichern großer Binärdateien in MongoDB verwendet werden? Jun 06, 2025 am 10:50 AM

GridFS ist ein Tool in MongoDB zum Speichern und Abrufen von Dateien mit einer Größengrenze von mehr als 16 MBBSON. 1. Es unterteilt die Datei in 255 KB -Blöcke, speichert sie in der Fs.Chunks -Sammlung und speichert die Metadaten in der Fs. -Files -Sammlung. 2. Zu den geeigneten Situationen gehören: mehr als 16 MB Dateien, die Notwendigkeit, Dateien und Metadaten einheitlich zu verwalten, auf bestimmte Teile der Datei zuzugreifen und MongoDB zu verwenden, ohne externe Speichersysteme einzuführen. 3.. 4. Alternative Lösungen umfassen: Speichern des Dateipfads in MongoDB und das Speichern im Dateisystem.

Befehle und Vorsichtsmaßnahmen zum Erstellen von Datenbanken in MongoDB Befehle und Vorsichtsmaßnahmen zum Erstellen von Datenbanken in MongoDB Jun 04, 2025 pm 10:39 PM

Es gibt keinen expliziten Befehl "createdatabase" in mongoDB, die Datenbank wird erstellt, wenn die Daten zum ersten Mal eingefügt werden. 1. Verwenden Sie "Usemydb", um zur Datenbank umzusteigen. 2. Einfügen das Dokument wie "db.users.insertone ({name: 'Johndoe', Alter: 30})". Zu den Hinweisen gehören: Datenbanken und Sammlungen werden erstellt, wenn Daten zum ersten Mal eingefügt werden, mit strikten Beschränkungen des Namens, und die Berechtigungsverwaltung, die Datenkonsistenz, die Leistungsoptimierung und die Wiederherstellung der Sicherung sollten berücksichtigt werden.

Betriebsbefehle zum Umbenennen von MongoDB -Sammlungen Betriebsbefehle zum Umbenennen von MongoDB -Sammlungen Jun 04, 2025 pm 10:36 PM

Zu den Gründen für die Umbenennung einer Sammlung in MongoDB gehören Code Refactoring und Leistungsoptimierung unter Verwendung des Befehls renameCollection. Zu den Hinweisen gehören: 1. Verriegelung der Datenbank, 2.. Best Practice -Vorschläge: 1. Wählen Sie Niedrigpeakbetrieb, 2. Backup -Daten, 3. Überprüfen Sie zuerst in der Testumgebung. Die Umbenennung von Sammlungen erfordert eine sorgfältige Behandlung, um die Systemleistung und -stabilität zu gewährleisten.

Welche Optionen für die Verschlüsselung von Daten in Ruhe in MongoDB? Welche Optionen für die Verschlüsselung von Daten in Ruhe in MongoDB? Jun 09, 2025 am 12:04 AM

Es gibt vier Hauptmöglichkeiten für MongoDB, um Daten in Ruhe zu verschlüsseln. 1. Die Verschlüsselung wird durch Konfigurieren der Verschlüsselungseinstellungen und der Schlüsselverwaltung implementiert, die für Unternehmensversionen oder Atlas geeignet ist. 2. Verwenden Sie das Dateisystem oder eine Volumenverschlüsselung wie Luks und BitLocker, was für alle Versionen geeignet ist, aber eine grobe Schutzgranularität aufweist. 3.. Verschlüsselung auf Anwendungsebene, Verschlüsseln sensibler Felder im Code, der hoch sicher ist, aber erhöhte Entwicklungskosten aufweist. V. Verschiedene Lösungen können in Kombination gemäß den Anforderungen der Bereitstellungsumgebung und den Sicherheitsanforderungen verwendet werden.

See all articles