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 kosongSatu baris per engine pack, satu kolom per isolation level.
MesinRURCRRSISER
PostgreSQL 16postgres-16anomaliwrite-skewaliasRCanomaliwrite-skewanomaliwrite-skewlevel tidak adadibatalkan T240001
MySQL InnoDB 8.4mysql-8-innodbanomaliwrite-skewanomaliwrite-skewanomaliwrite-skewlevel tidak adadibatalkan T21213
Microsoft SQL Server 2022sqlserver-2022anomaliwrite-skewanomaliwrite-skewlevel tidak adaanomaliwrite-skewlevel tidak ada
Microsoft SQL Server 2022sqlserver-2022-rcsianomaliwrite-skewanomaliwrite-skewlevel tidak adaanomaliwrite-skewlevel tidak ada
Oracle Database 23ai Freeoracle-23ailevel tidak adaanomaliwrite-skewlevel tidak adalevel tidak adaanomaliwrite-skew
Keteranganbersihanomalidibatalkanlevel tidak ada

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 UNCOMMITTEDaliasREAD 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