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
| Mesin | RUREAD UNCOMMITTED | RCREAD COMMITTED | RRREPEATABLE READ | SISNAPSHOT | SERSERIALIZABLE |
|---|---|---|---|---|---|
| PostgreSQL 16postgres-16 | Write skew→ RC | Write skew | Write skew | level tidak ada | dibatalkan T240001 |
| MySQL InnoDB 8.4mysql-8-innodb | Write skew | Write skew | Write skew | level tidak ada | dibatalkan T21213 |
| SQL Server 2022sqlserver-2022 | Write skew | Write skew | ditolak · korban deadlock tidak dimodelkan | Write skew | ditolak · korban deadlock tidak dimodelkan |
| SQL Server 2022 · RCSIsqlserver-2022-rcsi | Write skew | Write 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).
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