Was ist das DB-SHM-Dateiformat?
Eine .db-shm Datei ist eine flüchtige Shared-Memory-Indexdatei, die automatisch von SQLite erstellt wird, wenn eine Datenbank im WAL-Modus (Write-Ahead Logging) betrieben wird. Sie existiert neben der Hauptdatenbankdatei und der zugehörigen .db-wal Datei; zusammen bilden sie den Satz aus drei Dateien, den der WAL-Modus erfordert.
Die Datei hat eine feste Größe von 32 KB und wird von allen SQLite-Verbindungen, die dieselbe Datenbank im WAL-Modus nutzen, per Memory-Mapping eingebunden. Sie speichert WAL-Index-Header und eine Hash-Tabelle, die WAL-Frame-Nummern auf Datenbank-Seitennummern abbildet. Dies ermöglicht es Readern, die neueste Version jeder Seite effizient zu finden, ohne die gesamte WAL-Datei scannen zu müssen.
Im Gegensatz zur Hauptdatei .db speichert die .db-shm Datei keine Benutzerdaten und ist nicht zwischen CPU-Architekturen portabel - ihre Byte-Reihenfolge entspricht der des Host-Rechners. SQLite erstellt sie automatisch, wenn die erste Verbindung eine Datenbank im WAL-Modus öffnet, und löscht sie sauber, wenn die letzte Verbindung geschlossen wird. Eine nach einem Absturz verbliebene .db-shm Datei kann sicher gelöscht werden, sofern die Datenbank momentan nicht geöffnet ist; SQLite erstellt sie beim nächsten Zugriff neu.
Im exklusiven Sperrmodus verwendet SQLite stattdessen Heap-Speicher, sodass keine .db-shm Datei auf die Festplatte geschrieben wird. Die Datei kann von keinem anderen Werkzeug außer SQLite selbst sinnvoll geöffnet oder interpretiert werden.
Sicherheit
RISIKO: LOWDie .db-shm Datei selbst enthält keine Benutzerdaten und kann nicht sinnvoll analysiert werden. Kein ausführbarer Inhalt. Die zugehörige .db Datenbankdatei kann je nach Anwendung sensible persönliche Daten (Nachrichten, Kontakte usw.) enthalten. Das Löschen einer veralteten -shm-Datei (wenn die Datenbank geschlossen ist) ist sicher; das Löschen bei geöffneter Datenbank kann zu Korruption führen.
Formatdetails
kurz gefasstProgramme zum Öffnen von DB-SHM-Dateien
Technische Details
technische Spezifikation| Erforderlicher SQLite-Modus | WAL-Modus (Write-Ahead Logging); wird nicht im Journal- oder exklusiven Sperrmodus erstellt |
| Dateigröße | Fest 32 KB (ein 32 KB Block pro Sperrbereich) |
| Byte-Reihenfolge | Nativ für den Host-Rechner; nicht portabel zwischen CPU-Architekturen |
| Kodierung | Binär (Memory-mapped OS-Strukturen; kein eigenständiges serialisiertes Format) |
| Inhalt | WAL-Index-Header und Hash-Tabelle zur Abbildung von WAL-Frame-Nummern auf Datenbank-Seitennummern |
| Benutzerdaten | Speichert keine Benutzerdaten; fungiert als Lese-Index der zugehörigen .db-wal Datei |
| Lebenszyklus | Automatische Erstellung beim Öffnen der ersten WAL-Verbindung; automatisches Löschen beim letzten sauberen Schließen |
| Absturzwiederherstellung | Manuelles Löschen sicher, wenn die Datenbank nicht geöffnet ist; SQLite erstellt sie automatisch neu |
| Begleitdateien | Immer am selben Ort wie die Hauptdatenbank .db und das Write-Ahead Log .db-wal |
| Absturzsicherungsmechanismus | Dual-Copy WAL-Index-Header; beide Kopien werden beim Öffnen auf Konsistenz geprüft |
| Exklusiver Sperrmodus | SQLite verwendet stattdessen Heap-Speicher; es wird keine .db-shm Datei auf die Festplatte geschrieben |
| MIME-Typ | application/octet-stream (kein dedizierter MIME-Typ) |
| Eingeführt mit | SQLite WAL-Modus, Version 3.7.0 (Juli 2010) |
| Plattform | Android, iOS, Windows, Linux, macOS |
| Veröffentlicht | 2010 (SQLite 3.7.0, WAL mode) |
| Neueste Version | SQLite 3.x (current; format tied to WAL implementation) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.sqlite.org |
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DB-SHM-Dateien.