Vad är filformatet DB-SHM?
En .db-shm-fil är en efemär indexfil för delat minne som skapas automatiskt av SQLite när en databas körs i WAL-läge (Write-Ahead Logging). Den existerar tillsammans med huvuddatabasfilen och dess tillhörande .db-wal-fil, och bildar tillsammans den uppsättning om tre filer som WAL-läget kräver.
Filen har en fast storlek på 32 KB och minnesmappas av alla SQLite-anslutningar som delar samma databas i WAL-läge. Den lagrar WAL-indexhuvuden och en hashtabell som mappar WAL-framenummer till databassidnummer, vilket gör att läsare effektivt kan hitta den senaste versionen av varje sida utan att skanna hela WAL-filen.
Till skillnad från huvudfilen .db lagrar .db-shm-filen ingen användardata och är inte portabel mellan CPU-arkitekturer - dess byteordning matchar värdmaskinen. SQLite skapar den automatiskt när den första anslutningen öppnar en databas i WAL-läge och raderar den helt när den sista anslutningen stängs. En kvarlämnad .db-shm-fil efter en krasch är säker att radera, förutsatt att databasen inte är öppen för tillfället; SQLite återskapar den vid nästa åtkomst.
I exklusivt låsningsläge använder SQLite istället heap-minne, så ingen .db-shm-fil skrivs till disken. Filen kan inte öppnas eller tolkas meningsfullt av något annat verktyg än SQLite självt.
Säkerhet & trygghet
RISK: LOWSjälva .db-shm-filen innehåller ingen användardata och kan inte parsas meningsfullt. Inget exekverbart innehåll. Den tillhörande .db-databasfilen kan innehålla känsliga personuppgifter (meddelanden, kontakter etc.) beroende på applikationen. Att radera en föråldrad -shm-fil (när databasen är stängd) är säkert; att radera den medan databasen är öppen kan orsaka korruption.
Formatdetaljer
i ett nötskalProgram som öppnar DB-SHM-filer
Tekniska detaljer
djup specifikation| SQLite-läge som krävs | WAL-läge (Write-Ahead Logging); skapas inte i journal-läge eller exklusivt låsningsläge |
| Filstorlek | Fast 32 KB (ett 32 KB-block per låsregion) |
| Byteordning | Värdmaskinens nativa; inte portabel mellan CPU-arkitekturer |
| Kodning | Binär (minnesmappade OS-strukturer; inte ett fristående serialiserat format) |
| Innehåll | WAL-indexhuvuden och hashtabell som mappar WAL-framenummer till databassidnummer |
| Användardata | Lagrar ingen användardata; fungerar som ett läsindex för den tillhörande .db-wal-filen |
| Livscykel | Skapas automatiskt när den första WAL-anslutningen öppnas; raderas automatiskt vid sista korrekta stängning |
| Återställning efter krasch | Säker att radera manuellt om databasen inte är öppen; SQLite återskapar den automatiskt |
| Tillhörande filer | Finns alltid på samma plats som huvuddatabasen .db och loggfilen .db-wal |
| Säkerhetsmekanism vid krasch | Dubbelkopierat WAL-indexhuvud; båda kopiorna kontrolleras för konsistens vid öppning |
| Exklusivt låsningsläge | SQLite använder heap-minne istället; ingen .db-shm-fil skrivs till disken |
| MIME-typ | application/octet-stream (ingen dedikerad MIME-typ) |
| Introducerades med | SQLite WAL-läge, version 3.7.0 (juli 2010) |
| Plattform | Android, iOS, Windows, Linux, macOS |
| Släppt | 2010 (SQLite 3.7.0, WAL mode) |
| Senaste version | SQLite 3.x (current; format tied to WAL implementation) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.sqlite.org |
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om DB-SHM-filer.