Was ist das DB-JOURNAL-Dateiformat?
Dateien mit der Dateiendung .db-journal enthalten die Seitenbilder, die für die Wiederherstellung einer SQLite Datenbank im Falle eines Transaktionsfehlers erforderlich sind. Dies sind temporäre Dateien, die von SQLite in demselben Verzeichnis erstellt werden, in dem die Datenbank gespeichert ist. Sie sollten nach Abschluss der Transaktion nicht mehr sichtbar sein, da SQLite sie automatisch bei COMMIT oder ROLLBACK löscht.
Dank der Transaktions-Rollback-Journaldateien mit der Dateiendung .db-journal ist es möglich, die Atomarität von Transaktionen in der Datenbank sicherzustellen. Eine Anwendung, die mit Datenbankdaten arbeitet und mitten in einer Transaktion abstürzt, hinterlässt keine unvollständigen Operationen - diese werden auf den Zustand vor Beginn der Transaktion zurückgesetzt. Eine .db-journal Datei ist auf dem Datenträger vorhanden:
- während der Ausführung einer Schreibtransaktion (Journal-Modus DELETE, der Standardwert von SQLite),
- wenn eine Transaktion durch einen Absturz unterbrochen wurde - bis die nächste Verbindung die Datenbank öffnet,
- wenn sich die Datenbank im exklusiven Sperrmodus befindet (
PRAGMA locking_mode=EXCLUSIVE) - bis dieser ausgeschaltet wird.
SQLite kann mehrere verschiedene temporäre Sidecar-Dateien verwenden, um die Kohärenz und Sicherheit von Datenbankoperationen zu gewährleisten. .db-journal ist das klassische Rollback-Journal; .db-wal und .db-shm dienen der entsprechenden Rolle im neueren WAL-Modus (Write-Ahead Log).
Benennung von .db-journal Dateien
Die Journaldatei wird benannt, indem -journal an den vollständigen Datenbank-Dateinamen angehängt wird. Wenn die Datenbank beispielsweise als baza.db gespeichert ist, wird die temporäre Datei baza.db-journal genannt und im selben Verzeichnis gespeichert. Temporäre Dateien sind für Benutzer normalerweise nicht sichtbar. Im Falle eines Absturzes oder Stromausfalls verbleibt das Journal im Verzeichnis, bis die Datenbank das nächste Mal geöffnet wird - SQLite erkennt dann das „Hot Journal“, spielt die gespeicherten Seitenbilder ab, um den Zustand vor der Transaktion wiederherzustellen, und löscht das Journal automatisch.
Sie sollten niemals eine .db-journal Datei löschen, während eine Schreibtransaktion im Gange ist, da dies die Datenbank beschädigen wird. Eine dauerhafte .db-journal Datei nach einem sauberen Herunterfahren deutet fast immer auf einen vorherigen Absturz hin; SQLite verarbeitet die Wiederherstellung sicher beim nächsten Öffnen. Im WAL-Modus (PRAGMA journal_mode=WAL), der in SQLite 3.7.0 (Juli 2010) eingeführt wurde, wird die .db-journal Datei überhaupt nicht verwendet - eine .db-wal Datei übernimmt deren Rolle. Die meisten modernen Anwendungsdatenbanken sind auf den WAL-Modus umgestiegen, um die Gleichzeitigkeit von Lesevorgängen zu verbessern.
Sicherheit
RISIKO: LOWNicht ausführbar; binäre Daten zur Wiederherstellung nach Abstürzen. Das Löschen eines -journal, während in die Datenbank geschrieben wird, beschädigt die Datenbank - dies ist das Hauptrisiko im Betrieb. Verbleibende Journale von Abstürzen können sicher liegen gelassen werden, bis SQLite sie automatisch wiederherstellt. Ein -journal kann sensible, nicht abgeschlossene Daten aus der unterbrochenen Transaktion enthalten (Teilschreibvorgänge von Nachrichten, Anmeldedaten usw.); behandeln Sie es mit der gleichen Vertraulichkeit wie die Hauptdatenbank. Öffnen oder verteilen Sie ein -journal nicht isoliert ohne die übergeordnete Datenbank.
Formatdetails
kurz gefasstProgramme zum Öffnen von DB-JOURNAL-Dateien
Technische Details
technische Spezifikation| Formattyp | Binäres temporäres Transaktions-Rollback-Journal (SQLite Sidecar-Datei) |
| Magic Bytes | 8-Byte Header: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (Hot/persistentes Journal) |
| Byte-Reihenfolge | Big-endian (Journal-Header-Felder in Netzwerk-Byte-Reihenfolge gespeichert) |
| Journal-Header-Größe | 28 Bytes (Felder für Seitenzahl, Zufalls-Nonce, Sektorgröße, Seitengröße) |
| Kodierung | Binär - speichert wortgetreue SQLite 3 Datenbank-Seitenbilder, die vor der Änderung kopiert wurden |
| Prüfsumme pro Seite | Zwei 32-Bit-Ganzzahlen, berechnet aus der Nonce und den Seitendaten; eine Abweichung signalisiert ein veraltetes oder unvollständiges Journal |
| Typische Dateigröße | 0 Bytes bis zu hunderten MB, abhängig davon, wie viele Seiten die abgebrochene Transaktion betroffen hat |
| Journal-Modus | Wird nur im Journal-Modus DELETE verwendet (Standard bei SQLite); wird im WAL-Modus nicht erstellt |
| Benennungskonvention | Pfad der Hauptdatenbank mit angehängtem -journal (z. B. mydata.db → mydata.db-journal) |
| Wiederherstellungsmechanismus | SQLite erkennt beim Öffnen der Verbindung ein Hot Journal, spielt Seitenbilder ab, um den Zustand vor der Transaktion wiederherzustellen, und löscht dann das Journal |
| WAL-Ablösung | Der WAL-Modus (.db-wal + .db-shm), eingeführt in SQLite 3.7.0 (Juli 2010), wird für gleichzeitige Arbeitslasten bevorzugt und verwendet die .db-journal Datei nicht |
| Veröffentlicht | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Neueste Version | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.sqlite.org |
DB-JOURNAL-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DB-JOURNAL-Dateien.