Che cos'è il formato di file DB-SHM?
Un file .db-shm è un file di indice di memoria condivisa effimero creato automaticamente da SQLite quando un database opera in modalità WAL (Write-Ahead Logging). Esiste insieme al file del database principale e al suo file complementare .db-wal, formando insieme il set di tre file richiesto dalla modalità WAL.
Il file ha una dimensione fissa di 32 KB ed è mappato in memoria da tutte le connessioni SQLite che condividono lo stesso database in modalità WAL. Memorizza le intestazioni dell'indice WAL e una tabella hash che mappa i numeri dei frame WAL ai numeri di pagina del database, consentendo ai lettori di individuare in modo efficiente l'ultima versione di ogni pagina senza scansionare l'intero file WAL.
A differenza del file .db principale, il file .db-shm non memorizza dati utente e non è portabile tra architetture CPU: il suo ordine dei byte (endianness) corrisponde a quello della macchina ospite. SQLite lo crea automaticamente quando la prima connessione apre un database in modalità WAL e lo elimina correttamente quando l'ultima connessione viene chiusa. Un file .db-shm residuo dopo un arresto anomalo può essere eliminato in sicurezza, a condizione che il database non sia attualmente aperto; SQLite lo ricrea al successivo accesso.
In modalità di blocco esclusivo (exclusive locking mode), SQLite utilizza invece la memoria heap, quindi nessun file .db-shm viene scritto su disco. Il file non può essere aperto o interpretato in modo significativo da alcuno strumento diverso da SQLite stesso.
Sicurezza e incolumità
RISCHIO: LOWIl file .db-shm in sé non contiene dati utente e non può essere analizzato in modo significativo. Nessun contenuto eseguibile. Il file di database .db associato può contenere dati personali sensibili (messaggi, contatti, ecc.) a seconda dell'applicazione. L'eliminazione di un file -shm obsoleto (quando il database è chiuso) è sicura; eliminarlo mentre il database è aperto può causare corruzione.
Dettagli del formato
in sintesiProgrammi che aprono file DB-SHM
Dettagli tecnici
specifiche approfondite| Modalità SQLite richiesta | Modalità WAL (Write-Ahead Logging); non creato in modalità journal o exclusive locking |
| Dimensione del file | Fissa 32 KB (un blocco da 32 KB per regione di blocco) |
| Ordine dei byte | Nativo della macchina ospite; non portabile tra architetture CPU |
| Codifica | Binaria (strutture del sistema operativo mappate in memoria; non è un formato serializzato autonomo) |
| Contenuto | Intestazioni dell'indice WAL e tabella hash che mappa i numeri dei frame WAL ai numeri di pagina del database |
| Dati utente | Non memorizza dati utente; funge da indice di lettura del file complementare .db-wal |
| Ciclo di vita | Creato automaticamente all'apertura della prima connessione in modalità WAL; eliminato automaticamente all'ultima chiusura corretta |
| Ripristino dopo crash | Sicuro da eliminare manualmente se il database non è aperto; SQLite lo ricrea automaticamente |
| File complementari | Sempre situato insieme al database principale .db e al log write-ahead .db-wal |
| Meccanismo di sicurezza contro i crash | Intestazione dell'indice WAL a doppia copia; entrambe le copie controllate per coerenza all'apertura |
| Modalità di blocco esclusivo | SQLite utilizza invece la memoria heap; nessun file .db-shm viene scritto su disco |
| Tipo MIME | application/octet-stream (nessun tipo MIME dedicato) |
| Introdotto con | Modalità SQLite WAL, versione 3.7.0 (luglio 2010) |
| Piattaforma | Android, iOS, Windows, Linux, macOS |
| Rilasciato | 2010 (SQLite 3.7.0, WAL mode) |
| Ultima versione | SQLite 3.x (current; format tied to WAL implementation) |
| Standard aperto | Sì · royalty-free |
| Specifica | www.sqlite.org |
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file DB-SHM.