{
  "slug": "read-uncommitted-isolation",
  "term": "Read Uncommitted isolation",
  "aliases": [
    "Read Uncommitted",
    "READ UNCOMMITTED"
  ],
  "definition": "Read Uncommitted is a transaction isolation level that permits reading another transaction's uncommitted changes, although an implementation may provide stronger isolation.",
  "note": "PostgreSQL 18 accepts the level name but implements Read Committed behavior. Permitting an anomaly does not require an engine to expose it. [postgres-isolation]\n\nSQLite allows cross-connection dirty reads only when the connections share a page and schema cache and the reader enables PRAGMA read_uncommitted. Setting the pragma on a private-cache connection is insufficient. Seeing one's own earlier changes on the same connection is a different behavior. [sqlite-isolation] [sqlite-read-uncommitted]\n\nSQLite's option omits table read-lock acquisition; it does not remove write-lock or sqlite_schema-lock requirements. Shared-cache mode is discouraged by SQLite and is not a general recommendation for improving concurrency. [sqlite-shared-cache]\n\nThe companion analysis includes a four-case SQLite visibility example with a writer rollback. It distinguishes the requested setting from an actual dirty read; it does not measure crash durability or certify all statement types. [hesela-consistency]",
  "related": [
    "dirty-read",
    "read-committed-isolation",
    "repeatable-read-isolation"
  ],
  "status": "unknown",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-13",
  "citations": [
    {
      "id": "postgres-isolation",
      "title": "PostgreSQL 18: Transaction Isolation, Table 13.1 and section 13.2.1.",
      "url": "https://www.postgresql.org/docs/18/transaction-iso.html",
      "accessed": "2026-11-13"
    },
    {
      "id": "sqlite-isolation",
      "title": "SQLite: Isolation Between Database Connections.",
      "url": "https://www.sqlite.org/isolation.html",
      "accessed": "2026-11-13"
    },
    {
      "id": "sqlite-read-uncommitted",
      "title": "SQLite: PRAGMA read_uncommitted.",
      "url": "https://www.sqlite.org/pragma.html#pragma_read_uncommitted",
      "accessed": "2026-11-13"
    },
    {
      "id": "sqlite-shared-cache",
      "title": "SQLite: Shared-Cache Mode, sections 1.1 and 2.2.1-2.3.",
      "url": "https://www.sqlite.org/sharedcache.html",
      "accessed": "2026-11-13"
    },
    {
      "id": "hesela-consistency",
      "title": "Hesela: Read Uncommitted depends on the engine and connection setup.",
      "url": "https://hesela.com/analyses/storage-consistency-ordering/#read-uncommitted",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "Primary-documentation synthesis accessed 2026-11-13. PostgreSQL 18 behavior is documentation-based; the linked SQLite example is separately identified by its recorded runtime version.",
    "The SQL minimum is described through PostgreSQL's documentation, not an independent inspection of the ISO standard. [postgres-isolation]"
  ]
}
