Skip to content

The same schedule, every engine, every level

Committed, aborted with which error, or completed with an anomaly. The disagreement between engines is the lesson.

Documents: Write skew — Two doctors are on call and at least one must remain. Each opens the roster, sees that the other is on call, and takes themselves off. Both commit.

Updated: The on-call roster empties

The on-call roster empties — One row per engine pack, one column per isolation level.
EngineRURCRRSISER
PostgreSQL 16postgres-16Write skew→ RCWrite skewWrite skew
no such level
aborted T240001
MySQL InnoDB 8.4mysql-8-innodbWrite skewWrite skewWrite skew
no such level
aborted T21213
SQL Server 2022sqlserver-2022Write skewWrite skew
refused · deadlock victim not modelled
Write skew
refused · deadlock victim not modelled
SQL Server 2022 · RCSIsqlserver-2022-rcsiWrite skewWrite skew
refused · deadlock victim not modelled
Write skew
refused · deadlock victim not modelled
Oracle 23aioracle-23ai
no such level
Write skew
no such level
no such level
Write skew
  • Oracle 23ai at SERIALIZABLE permits Write skew in this schedule. The name promises serializability; the pack documents this level as SERIALIZABLE (Snapshot Isolation).
Legendanomalyabortedcleanno such levelrefused · not modelled

Which level names cannot be told apart

Every level of every engine here, run against all 11 schedules in the library and grouped by what the application saw: the value each statement returned, where it waited, which transactions committed, and the table left behind. Only the error codes are ignored — 40001 and ORA-08177 are the same event in two dialects.

This is evidence over 11 schedules, not a proof of equivalence. Two levels in the same group agreed on every one of them; a twelfth schedule could still tell them apart. Read each group as “nothing here distinguishes these”, never as “these are the same level”.

    • PostgreSQL 16 READ UNCOMMITTED→ READ COMMITTED
    • PostgreSQL 16 READ COMMITTED

    Permits somewhere in the library: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 3

    • Microsoft SQL Server 2022 READ COMMITTED
    • Oracle Database 23ai Free READ COMMITTED

    Permits somewhere in the library: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 2

    • Microsoft SQL Server 2022 READ UNCOMMITTED
    • Microsoft SQL Server 2022 READ UNCOMMITTED

    Permits somewhere in the library: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 2

    • Microsoft SQL Server 2022 REPEATABLE READ
    • Microsoft SQL Server 2022 REPEATABLE READ

    Permits somewhere in the library: Phantom read, Write skew· aborts a transaction in 2

    • Microsoft SQL Server 2022 SERIALIZABLE
    • Microsoft SQL Server 2022 SERIALIZABLE

    Permits somewhere in the library: no anomaly in any schedule· aborts a transaction in 2

    • Microsoft SQL Server 2022 SNAPSHOT
    • Microsoft SQL Server 2022 SNAPSHOT

    Permits somewhere in the library: Write skew· aborts a transaction in 5

    • MySQL InnoDB 8.4 READ COMMITTED

    Permits somewhere in the library: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 3

    • MySQL InnoDB 8.4 READ UNCOMMITTED

    Permits somewhere in the library: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 3

    • MySQL InnoDB 8.4 REPEATABLE READ

    Permits somewhere in the library: Lost update, Write skew· aborts a transaction in 3

    • MySQL InnoDB 8.4 SERIALIZABLE

    Permits somewhere in the library: no anomaly in any schedule· aborts a transaction in 6

    • Oracle Database 23ai Free SERIALIZABLE

    Permits somewhere in the library: Write skew· aborts a transaction in 2

    • PostgreSQL 16 REPEATABLE READ

    Permits somewhere in the library: Write skew· aborts a transaction in 6

    • PostgreSQL 16 SERIALIZABLE

    Permits somewhere in the library: no anomaly in any schedule· aborts a transaction in 8

    • Microsoft SQL Server 2022 READ COMMITTED

    Permits somewhere in the library: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· aborts a transaction in 2

Names these engines do not implement at all

  • PostgreSQL 16 SNAPSHOT
  • MySQL InnoDB 8.4 SNAPSHOT
  • Oracle Database 23ai Free READ UNCOMMITTED
  • Oracle Database 23ai Free REPEATABLE READ
  • Oracle Database 23ai Free SNAPSHOT

What this is, precisely

This models documented behaviour for a fixed set of operations at specific engine versions. It is not a database. Anything outside the modelled set is refused rather than approximated, and every engine claim links to the vendor documentation behind it.

Designed & built by Andi Fathul Mukminin · © 2026