Hvad er DB-JOURNAL-filformatet?
Filer med filendelsen .db-journal indeholder de sidebilleder, der er nødvendige for gendannelse af en SQLite database i tilfælde af en transaktionsfejl. Dette er midlertidige filer oprettet af SQLite i den samme mappe, hvor databasen er gemt. De bør ikke være synlige, efter at transaktionen er afsluttet, da SQLite sletter dem automatisk ved COMMIT eller ROLLBACK.
Takket være transaktions-rollback-journalfiler med filendelsen .db-journal er det muligt at sikre atomicitet af transaktioner i databasen. En applikation, der opererer på databasedata og går ned midt i en transaktion, vil ikke efterlade operationer ufuldstændige - de vil blive rullet tilbage til tilstanden før transaktionen begyndte. En .db-journal fil er til stede på disken:
- under udførelsen af en skrivetransaktion (journaltilstanden DELETE, som er SQLite's standard),
- når en transaktion blev afbrudt af et nedbrud - indtil den næste forbindelse åbner databasen,
- når databasen er i eksklusiv låsetilstand (
PRAGMA locking_mode=EXCLUSIVE) - indtil den slås fra.
SQLite kan bruge flere forskellige midlertidige sidevognsfiler for at sikre sammenhæng og sikkerhed i databaseoperationer. .db-journal er den klassiske rollback-journal; .db-wal og .db-shm tjener den tilsvarende rolle i den nyere WAL (Write-Ahead Log) tilstand.
Navngivning af .db-journal filer
Journalfilen navngives ved at tilføje -journal til det fulde databasenavn. For eksempel, hvis databasen er gemt som baza.db, vil den midlertidige fil hedde baza.db-journal og blive gemt i samme mappe. Midlertidige filer er normalt ikke synlige for brugere. I tilfælde af et nedbrud eller strømsvigt forbliver journalen i mappen, indtil næste gang databasen åbnes - SQLite registrerer derefter den „varme journal“, genspiller de gemte sidebilleder for at gendanne tilstanden før transaktionen og sletter journalen automatisk.
Du bør aldrig slette en .db-journal fil, mens en skrivetransaktion er i gang, da dette vil korrumpere databasen. En vedvarende .db-journal efter en ren nedlukning indikerer næsten altid et tidligere nedbrud; SQLite håndterer gendannelsen sikkert ved næste åbning. I WAL-tilstand (PRAGMA journal_mode=WAL), introduceret i SQLite 3.7.0 (juli 2010), bruges .db-journal filen slet ikke - en .db-wal fil overtager dens rolle. De fleste moderne applikationsdatabaser er skiftet til WAL-tilstand for forbedret læse-samtidighed.
Sikkerhed og tryghed
RISIKO: LOWIkke eksekverbar; binære data til gendannelse efter nedbrud. Sletning af en -journal, mens databasen bliver skrevet til, vil korrumpere databasen - den primære operationelle risiko. Overskydende journaler fra nedbrud er sikre at lade ligge, indtil SQLite automatisk gendanner dem. En -journal kan indeholde følsomme ikke-gennemførte data fra den afbrudte transaktion (delvise skrivninger af beskeder, legitimationsoplysninger osv.); behandl med samme fortrolighed som den primære database. Åbn eller distribuer ikke en -journal isoleret uden moderdatabasen.
Formatdetaljer
kort fortaltProgrammer der åbner DB-JOURNAL-filer
Tekniske detaljer
dyb specifikation| Format-type | Binær midlertidig transaktions-rollback-journal (SQLite sidevognsfil) |
| Magic bytes | 8-byte header: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (varm/vedvarende journal) |
| Byte-orden | Big-endian (journal-headerfelter gemt i netværks-byte-orden) |
| Journal-headerstørrelse | 28 bytes (sideantal, tilfældig nonce, sektorstørrelse, sidestørrelsesfelter) |
| Kodning | Binær - gemmer ordrette SQLite 3 databasesidebilleder kopieret før ændring |
| Checksum per side | To 32-bit heltal beregnet ud fra nonce og sidedata; uoverensstemmelse signalerer en forældet eller ufuldstændig journal |
| Typisk filstørrelse | 0 bytes til hundreder af MB afhængigt af hvor mange sider den afbrudte transaktion berørte |
| Journaltilstand | Bruges kun i DELETE-journaltilstand (SQLite's standard); oprettes ikke i WAL-tilstand |
| Navngivningskonvention | Primær databasesti med -journal tilføjet (f.eks. mydata.db → mydata.db-journal) |
| Gendannelsesmekanisme | SQLite registrerer en varm journal ved åbning af forbindelse, genspiller sidebilleder for at gendanne tilstanden før transaktionen og sletter derefter journalen |
| WAL-afløsning | WAL-tilstand (.db-wal + .db-shm), introduceret i SQLite 3.7.0 (juli 2010), foretrækkes til samtidige arbejdsbelastninger og bruger ikke .db-journal filen |
| Udgivet | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Seneste version | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.sqlite.org |
DB-JOURNAL-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om DB-JOURNAL-filer.