Lompat ke konten

Jadwal yang sama, semua mesin, semua level

Commit, dibatalkan dengan kesalahan apa, atau selesai dengan anomali. Perbedaan antar mesin itulah pelajarannya.

Mendokumentasikan: Write skew — Dua dokter sedang berjaga dan setidaknya satu harus tetap berjaga. Masing-masing membuka jadwal, melihat bahwa yang lain berjaga, lalu mengeluarkan dirinya. Keduanya commit.

Diperbarui: Jadwal jaga yang menjadi kosong

Jadwal jaga yang menjadi kosong — Satu baris per engine pack, satu kolom per isolation level.
MesinRURCRRSISER
PostgreSQL 16postgres-16Write skew→ RCWrite skewWrite skew
level tidak ada
dibatalkan T240001
MySQL InnoDB 8.4mysql-8-innodbWrite skewWrite skewWrite skew
level tidak ada
dibatalkan T21213
SQL Server 2022sqlserver-2022Write skewWrite skew
ditolak · korban deadlock tidak dimodelkan
Write skew
ditolak · korban deadlock tidak dimodelkan
SQL Server 2022 · RCSIsqlserver-2022-rcsiWrite skewWrite skew
ditolak · korban deadlock tidak dimodelkan
Write skew
ditolak · korban deadlock tidak dimodelkan
Oracle 23aioracle-23ai
level tidak ada
Write skew
level tidak ada
level tidak ada
Write skew
  • Oracle 23ai pada SERIALIZABLE mengizinkan Write skew dalam jadwal ini. Namanya menjanjikan serializability; pack ini mendokumentasikan level tersebut sebagai SERIALIZABLE (Snapshot Isolation).
Keterangananomalidibatalkanbersihlevel tidak adaditolak · tidak dimodelkan

Nama level mana yang tidak bisa dibedakan

Setiap level pada setiap mesin di sini dijalankan terhadap seluruh 11 schedule di pustaka ini, lalu dikelompokkan berdasarkan apa yang dilihat aplikasi: nilai yang dikembalikan tiap statement, di mana ia menunggu, transaksi mana yang commit, dan tabel yang ditinggalkannya. Hanya kode error yang diabaikan — 40001 dan ORA-08177 adalah peristiwa yang sama dalam dua dialek.

Ini adalah bukti atas 11 schedule, bukan pembuktian kesetaraan. Dua level dalam satu kelompok sepakat pada semuanya; schedule kedua belas masih bisa membedakannya. Bacalah tiap kelompok sebagai “tidak ada di sini yang membedakan keduanya”, bukan sebagai “keduanya level yang sama”.

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

    Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 3

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

    Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 2

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

    Mengizinkan di suatu tempat dalam pustaka: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 2

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

    Mengizinkan di suatu tempat dalam pustaka: Phantom read, Write skew· meng-abort sebuah transaksi pada 2

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

    Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana pun· meng-abort sebuah transaksi pada 2

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

    Mengizinkan di suatu tempat dalam pustaka: Write skew· meng-abort sebuah transaksi pada 5

    • MySQL InnoDB 8.4 READ COMMITTED

    Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 3

    • MySQL InnoDB 8.4 READ UNCOMMITTED

    Mengizinkan di suatu tempat dalam pustaka: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 3

    • MySQL InnoDB 8.4 REPEATABLE READ

    Mengizinkan di suatu tempat dalam pustaka: Lost update, Write skew· meng-abort sebuah transaksi pada 3

    • MySQL InnoDB 8.4 SERIALIZABLE

    Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana pun· meng-abort sebuah transaksi pada 6

    • Oracle Database 23ai Free SERIALIZABLE

    Mengizinkan di suatu tempat dalam pustaka: Write skew· meng-abort sebuah transaksi pada 2

    • PostgreSQL 16 REPEATABLE READ

    Mengizinkan di suatu tempat dalam pustaka: Write skew· meng-abort sebuah transaksi pada 6

    • PostgreSQL 16 SERIALIZABLE

    Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana pun· meng-abort sebuah transaksi pada 8

    • Microsoft SQL Server 2022 READ COMMITTED

    Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skew· meng-abort sebuah transaksi pada 2

Nama yang sama sekali tidak diimplementasikan mesin-mesin ini

  • 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

Apa ini, tepatnya

Ini memodelkan perilaku yang terdokumentasi untuk sekumpulan operasi tetap pada versi mesin tertentu. Ini bukan basis data. Apa pun di luar himpunan yang dimodelkan ditolak, bukan didekati, dan setiap klaim tentang mesin tertaut ke dokumentasi vendornya.

Designed & built by Andi Fathul Mukminin · © 2026