{
  "slug": "sqlite-super-journal",
  "term": "SQLite super-journal",
  "aliases": [
    "Super-journal",
    "SQLite super journal"
  ],
  "definition": "A SQLite super-journal is a coordination file that links recovery outcomes for a qualifying rollback-mode transaction modifying multiple attached databases on one connection.",
  "note": "The super-journal lists participating rollback-journal paths, not database page contents. After journal and database synchronization, deleting it marks the multi-file commit; remaining individual journals can then be cleaned up. [sqlite-atomiccommit] Creation requires at least two modified databases with synchronous not OFF and journal_mode outside OFF, MEMORY and WAL. [sqlite-tempfiles] The documented cross-file guarantee also excludes an in-memory main database. [sqlite-attach] This mechanism belongs to SQLite's attached-database transaction, not an arbitrary set of database servers. See the commit-scope comparison. [hesela-wal]",
  "status": "shipping",
  "advantages": [
    {
      "text": "Provides a shared recovery decision for participating databases under the documented rollback-mode conditions.",
      "citationIds": [
        "sqlite-atomiccommit"
      ]
    }
  ],
  "limitations": [
    {
      "text": "WAL transactions remain atomic per database, not across the attached database set.",
      "citationIds": [
        "sqlite-wal"
      ]
    },
    {
      "text": "Missing volumes or changed mount paths after a crash can break the links between journals and compromise cross-file atomicity.",
      "citationIds": [
        "sqlite-locking"
      ]
    }
  ],
  "related": [
    "rollback-journal",
    "hot-journal",
    "write-ahead-log",
    "crash-consistency",
    "fsync",
    "persistence-ordering"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "sqlite-atomiccommit",
      "title": "SQLite: Atomic Commit In SQLite",
      "url": "https://sqlite.org/atomiccommit.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "sqlite-tempfiles",
      "title": "SQLite: Temporary Files Used By SQLite",
      "url": "https://sqlite.org/tempfiles.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "sqlite-attach",
      "title": "SQLite: ATTACH DATABASE",
      "url": "https://sqlite.org/lang_attach.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "sqlite-wal",
      "title": "SQLite: Write-Ahead Logging",
      "url": "https://sqlite.org/wal.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "sqlite-locking",
      "title": "SQLite: File Locking And Concurrency In SQLite Version 3",
      "url": "https://sqlite.org/lockingv3.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "hesela-wal",
      "title": "Hesela: WAL, checkpoints and torn pages, SQLite commit scope",
      "url": "https://hesela.com/analyses/wal-checkpoints-torn-pages/#sqlite-commit-scope",
      "accessed": "2026-10-14"
    }
  ],
  "updated": "2026-10-14"
}
