MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist es sicher, die Journaldatei von mongodb zu löschen?

TL;DR:Sie haben zwei Möglichkeiten. Verwenden Sie --smallfiles Startoption beim Starten von MongoDB, um die Größe der Journaldateien auf 128 MB zu begrenzen, oder deaktivieren Sie das Journaling mit --nojournal Möglichkeit. Verwenden von --nojournal in der Produktion ist normalerweise eine schlechte Idee, und es ist oft sinnvoll, auch in der Entwicklung unterschiedliche Schreibanforderungen zu verwenden, damit Sie in dev und prod keinen unterschiedlichen Code haben.

Die lange Antwort :Nein, das Löschen der Journaldatei ist nicht sicher. Die Idee des Journaling ist folgende:

Ein Schreibvorgang kommt herein. Damit dieser Schreibvorgang dauerhaft (und die Datenbank dauerhaft) wird, muss der Schreibvorgang irgendwie auf die Festplatte gehen.

Leider dauern Schreibvorgänge auf die Festplatte im Vergleich zu Schreibvorgängen in den RAM Äonen, sodass die Datenbank in einem Dilemma steckt:Nicht auf die Festplatte zu schreiben, ist riskant, da ein unerwartetes Herunterfahren zu Datenverlust führen würde. Aber das Schreiben auf die Festplatte für jeden einzelnen Schreibvorgang wird die Leistung der Datenbank so stark verringern, dass sie für praktische Zwecke unbrauchbar wird.

Anstatt in die Datendateien selbst zu schreiben, und anstatt dies für jede Anforderung zu tun, hängt die Datenbank jetzt einfach an eine Journaldatei an, in der sie alle Operationen speichert, die noch nicht an die eigentlichen Datendateien übergeben wurden. Dies ist viel schneller, da die Datei bereits „heiß“ ist, da sie ständig gelesen und beschrieben wird, und es sich nur um eine Datei handelt, nicht um eine Reihe von Dateien, und schließlich, weil alle 100 ms alle ausstehenden Operationen in einem Stapel geschrieben werden standardmäßig. Das Löschen dieser Datei mitten in etwas richtet Chaos an.