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 | RU | RC | RR | SI | SER |
|---|---|---|---|---|---|
| PostgreSQL 16postgres-16 | anomaliwrite-skewalias → RC | anomaliwrite-skew | anomaliwrite-skew | level tidak ada | dibatalkan T240001 |
| MySQL InnoDB 8.4mysql-8-innodb | anomaliwrite-skew | anomaliwrite-skew | anomaliwrite-skew | level tidak ada | dibatalkan T21213 |
| Microsoft SQL Server 2022sqlserver-2022 | anomaliwrite-skew | anomaliwrite-skew | level tidak ada | anomaliwrite-skew | level tidak ada |
| Microsoft SQL Server 2022sqlserver-2022-rcsi | anomaliwrite-skew | anomaliwrite-skew | level tidak ada | anomaliwrite-skew | level tidak ada |
| Oracle Database 23ai Freeoracle-23ai | level tidak ada | anomaliwrite-skew | level tidak ada | level tidak ada | anomaliwrite-skew |
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 UNCOMMITTEDalias → READ COMMITTEDpostgres-16
- PostgreSQL 16 READ COMMITTEDpostgres-16
Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-abort sebuah transaksi pada 3
- Microsoft SQL Server 2022 READ COMMITTEDsqlserver-2022-rcsi
- Oracle Database 23ai Free READ COMMITTEDoracle-23ai
Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-abort sebuah transaksi pada 2
- Microsoft SQL Server 2022 READ UNCOMMITTEDsqlserver-2022
- Microsoft SQL Server 2022 READ UNCOMMITTEDsqlserver-2022-rcsi
Mengizinkan di suatu tempat dalam pustaka: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-abort sebuah transaksi pada 2
- Microsoft SQL Server 2022 REPEATABLE READsqlserver-2022
- Microsoft SQL Server 2022 REPEATABLE READsqlserver-2022-rcsi
Mengizinkan di suatu tempat dalam pustaka: Phantom read, Write skewmeng-abort sebuah transaksi pada 2
- Microsoft SQL Server 2022 SERIALIZABLEsqlserver-2022
- Microsoft SQL Server 2022 SERIALIZABLEsqlserver-2022-rcsi
Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana punmeng-abort sebuah transaksi pada 2
- Microsoft SQL Server 2022 SNAPSHOTsqlserver-2022
- Microsoft SQL Server 2022 SNAPSHOTsqlserver-2022-rcsi
Mengizinkan di suatu tempat dalam pustaka: Write skewmeng-abort sebuah transaksi pada 5
- MySQL InnoDB 8.4 READ COMMITTEDmysql-8-innodb
Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-abort sebuah transaksi pada 3
- MySQL InnoDB 8.4 READ UNCOMMITTEDmysql-8-innodb
Mengizinkan di suatu tempat dalam pustaka: Dirty read, Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-abort sebuah transaksi pada 3
- MySQL InnoDB 8.4 REPEATABLE READmysql-8-innodb
Mengizinkan di suatu tempat dalam pustaka: Lost update, Write skewmeng-abort sebuah transaksi pada 3
- MySQL InnoDB 8.4 SERIALIZABLEmysql-8-innodb
Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana punmeng-abort sebuah transaksi pada 6
- Oracle Database 23ai Free SERIALIZABLEoracle-23ai
Mengizinkan di suatu tempat dalam pustaka: Write skewmeng-abort sebuah transaksi pada 2
- PostgreSQL 16 REPEATABLE READpostgres-16
Mengizinkan di suatu tempat dalam pustaka: Write skewmeng-abort sebuah transaksi pada 6
- PostgreSQL 16 SERIALIZABLEpostgres-16
Mengizinkan di suatu tempat dalam pustaka: tidak ada anomali pada schedule mana punmeng-abort sebuah transaksi pada 8
- Microsoft SQL Server 2022 READ COMMITTEDsqlserver-2022
Mengizinkan di suatu tempat dalam pustaka: Lost update, Non-repeatable read, Phantom read, Read skew, Write skewmeng-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