Was ist das DB-WAL-Dateiformat?
.db-wal-Dateien werden von der SQLite-Datenbank-Engine (seit Version 3.7.0, veröffentlicht im Juli 2010) im WAL-Journaling-Modus (Write-Ahead Logging) verwendet.
Inhalt von DB-WAL-Dateien
Dateien mit der Erweiterung .db-wal enthalten Write-Ahead-Log-Daten für eine zugehörige SQLite-Datenbank. Solche Dateien werden erstellt und verwendet, während eine Datenbank geöffnet ist und aktiv geändert wird. Eine .db-wal-Datei speichert bestätigte Datenbankänderungen - vollständige Datenbankseiten -, die noch nicht in die Hauptdatei .db zurückgeschrieben („checkpointed“) wurden. Dieser Write-Ahead-Ansatz ist schneller als das direkte Ändern von Datenbankseiten an Ort und Stelle und gewährleistet Beständigkeit: Im Falle eines plötzlichen Stromausfalls oder Systemabsturzes kann SQLite das WAL erneut abspielen, um alle bestätigten Transaktionen wiederherzustellen.
Jede .db-wal-Datei beginnt mit einem 32-Byte-Header, der eine 4-Byte-Magic-Number enthält (0x377f0682 für Little-Endian-Prüfsummen, 0x377f0683 für Big-Endian), Salt-Werte und eine kumulative Prüfsumme. Der Hauptteil besteht aus Frames: einem 24-Byte-Frame-Header plus jeweils einer vollständigen Datenbankseite. Salt-Werte im Header machen veraltete Frames nach einem Checkpoint ungültig und verhindern so versehentliche Wiederholungen.
Verwendung von DB-WAL-Dateien
Die Verwaltung des .db-wal-Logs erfolgt vollautomatisch durch die SQLite-Engine. Eine begleitende .db-shm-Datei (Shared-Memory-Index) ist immer zusammen mit dem WAL vorhanden, solange die Datenbank geöffnet ist. Die .db-wal-Datei verschwindet automatisch, sobald alle Änderungen per Checkpoint übertragen wurden - der Standard-Schwellenwert für wal_autocheckpoint liegt bei 1000 Seiten. Der zugrunde liegende WAL-Mechanismus ist auf mobilen Geräten weit verbreitet; Datenbanken in Android- und iOS-Apps arbeiten häufig im WAL-Modus für verbesserte Nebenläufigkeit und Schreibleistung.
Sicherheit
RISIKO: LOWEine .db-wal besteht aus inerten Daten, nicht aus ausführbarem Code, und kann daher nicht von selbst ausgeführt werden. Die echten Risiken sind betrieblicher Natur, keine Malware: (1) Das Löschen oder Verlieren des -wal, während die Datenbank geöffnet ist oder nach einem Absturz, verwirft die neuesten bestätigten Transaktionen - sichern Sie -db, -wal und -shm zusammen; (2) das WAL einer App-Datenbank kann sensible, noch nicht per Checkpoint verarbeitete Daten enthalten (Nachrichten, Token, Verlauf), behandeln Sie es daher vertraulich. Wenn die übergeordnete Datenbank verschlüsselt ist (SQLCipher/SEE), ist auch das -wal verschlüsselt.
Formatdetails
kurz gefasstProgramme zum Öffnen von DB-WAL-Dateien
Technische Details
technische Spezifikation| Magic Bytes | 0x377f0682 bei Offset 0 (Little-Endian-Prüfsummen) oder 0x377f0683 (Big-Endian-Prüfsummen) |
| Header-Größe | 32 Bytes, enthaltend Magic, Dateiformat-Version, Seitengröße, Checkpoint-Sequenz, Salt-Paar und Prüfsumme |
| Frame-Struktur | 24-Byte-Frame-Header + eine vollständige Datenbankseite pro Frame |
| Seitengröße | Entspricht der Seitengröße der übergeordneten SQLite-Datenbank (typischerweise 4096 Bytes) |
| Prüfsumme | Kumulative 8-Byte-Prüfsumme (zwei 32-Bit-Wörter) in jedem Frame-Header und im WAL-Header |
| Salt-Invalidierung | Zwei 32-Bit-Salt-Werte werden nach jedem Checkpoint randomisiert, wodurch veraltete Frames ungültig werden |
| Begleitdatei | Immer gepaart mit einer .db-shm-Datei (Shared-Memory-Index), solange die Datenbank geöffnet ist |
| Namenskonvention | Datenbank-Dateiname mit angehängtem -wal (z. B. mydata.db-wal) |
| Aktivierung | Wird nur erstellt, wenn die Datenbank in den WAL-Modus versetzt wurde (PRAGMA journal_mode=WAL) |
| Auto-Checkpoint | Standardmäßiger wal_autocheckpoint bei 1000 Seiten begrenzt das maximale WAL-Wachstum vor dem Checkpointing |
| Format-Versionsfeld | Der WAL-Header kodiert die SQLite-Bibliotheksversion als 3007000 (SQLite 3.7.0, Juli 2010) |
| Verschlüsselung | Standardmäßig keine; verschlüsselt, wenn die Datenbank die SEE- oder SQLCipher-Erweiterung verwendet |
| Veröffentlicht | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Neueste Version | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.sqlite.org |
DB-WAL-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DB-WAL-Dateien.