Vad är filformatet DB-JOURNAL?
Filer med filtillägget .db-journal innehåller de sidbilder som krävs för återställning av en SQLite-databas i händelse av ett transaktionsfel. Dessa är tillfälliga filer som skapas av SQLite i samma katalog där databasen lagras. De bör inte vara synliga efter att transaktionen har avslutats, eftersom SQLite raderar dem automatiskt vid COMMIT eller ROLLBACK.
Tack vare transaktionsjournalfiler med filtillägget .db-journal är det möjligt att säkerställa atomicitet för transaktioner i databasen. En applikation som opererar på databasdata och kraschar mitt i en transaktion kommer inte att lämna operationer ofullständiga - de kommer att återställas till tillståndet innan transaktionen påbörjades. En .db-journal-fil finns på disken:
- under utförandet av en skrivtransaktion (journal-läget DELETE, vilket är standard i SQLite),
- när en transaktion avbröts av en krasch - fram till dess att nästa anslutning öppnar databasen,
- när databasen är i exklusivt låsningsläge (
PRAGMA locking_mode=EXCLUSIVE) - tills det stängs av.
SQLite kan använda flera olika tillfälliga sidofiler för att säkerställa koherens och säkerhet i databasoperationer. .db-journal är den klassiska rollback-journalen; .db-wal och .db-shm tjänar motsvarande roll i det nyare WAL-läget (Write-Ahead Log).
Namngivning av .db-journal-filer
Journalfilen namnges genom att lägga till -journal till det fullständiga databasfilnamnet. Om databasen till exempel är sparad som baza.db, kommer den tillfälliga filen att heta baza.db-journal och lagras i samma katalog. Tillfälliga filer är normalt inte synliga för användare. I händelse av en krasch eller ett strömavbrott finns journalen kvar i katalogen tills nästa gång databasen öppnas - SQLite upptäcker då en „hot journal”, spelar upp de sparade sidbilderna för att återställa tillståndet före transaktionen och raderar journalen automatiskt.
Du bör aldrig radera en .db-journal-fil medan en skrivtransaktion pågår, eftersom det kommer att korrumpera databasen. En kvarstående .db-journal efter en ren avstängning indikerar nästan alltid en tidigare krasch; SQLite hanterar återställningen säkert vid nästa öppning. I WAL-läge (PRAGMA journal_mode=WAL), som introducerades i SQLite 3.7.0 (juli 2010), används inte .db-journal-filen alls - en .db-wal-fil tar dess roll. De flesta moderna applikationsdatabaser har gått över till WAL-läge för förbättrad samtidig läsning.
Säkerhet & trygghet
RISK: LOWInte körbar; binär kraschåterställningsdata. Att radera en -journal medan databasen skrivs till kommer att korrumpera databasen - den främsta operativa risken. Kvarlämnade journaler från krascher är säkra att låta vara tills SQLite återställer dem automatiskt. En -journal kan innehålla känslig icke-verkställd data från den avbrutna transaktionen (delvis skrivna meddelanden, inloggningsuppgifter etc.); hantera med samma konfidentialitet som huvuddatabasen. Öppna eller distribuera inte en -journal isolerat utan huvuddatabasen.
Formatdetaljer
i ett nötskalProgram som öppnar DB-JOURNAL-filer
Tekniska detaljer
djup specifikation| Formattyp | Binär tillfällig transaktionsjournal för rollback (SQLite-sidofil) |
| Magic bytes | 8-byte header: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (hot/persistent journal) |
| Bytordning | Big-endian (journalens header-fält lagras i nätverksbyteordning) |
| Storlek på journal-header | 28 bytes (fält för sidantal, slumpmässig nonce, sektorstorlek, sidstorlek) |
| Kodning | Binär - lagrar ordagranna sidbilder från SQLite 3-databasen kopierade före modifiering |
| Kontrollsumma per sida | Två 32-bitars heltal beräknade från nonce och siddata; avvikelse signalerar en inaktuell eller ofullständig journal |
| Typisk filstorlek | 0 bytes till hundratals MB beroende på hur många sidor den avbrutna transaktionen berörde |
| Journal-läge | Används endast i DELETE-läget (standard i SQLite); skapas inte i WAL-läge |
| Namngivningskonvention | Sökväg till huvuddatabasen med -journal tillagt (t.ex. mydata.db → mydata.db-journal) |
| Återställningsmekanism | SQLite upptäcker en „hot journal” vid öppning av anslutning, spelar upp sidbilder för att återställa tillståndet före transaktionen och raderar sedan journalen |
| Ersättning av WAL | WAL-läge (.db-wal + .db-shm), introducerat i SQLite 3.7.0 (juli 2010), föredras för samtidiga arbetsbelastningar och använder inte .db-journal-filen |
| Släppt | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Senaste version | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.sqlite.org |
DB-JOURNAL-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om DB-JOURNAL-filer.