PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa transaksi serializable PostgreSQL menganggap ini sebagai konflik?

Anda dapat memperbaiki masalah ini dengan indeks berikut:

CREATE INDEX accounts_user_idx ON accounts(user_id);

Karena hanya ada sedikit data dalam tabel contoh Anda, Anda harus memberi tahu PostgreSQL untuk menggunakan pemindaian indeks:

SET enable_seqscan=off;

Sekarang contoh Anda akan berhasil!

Jika itu tampak seperti ilmu hitam, lihat rencana eksekusi kueri SELECT . Anda dan UPDATE pernyataan.

Tanpa indeks keduanya akan menggunakan pemindaian berurutan pada tabel, sehingga membaca semua baris dalam tabel . Jadi kedua transaksi akan berakhir dengan SIReadLock di seluruh meja.

Ini memicu kegagalan serialisasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengatur stempel waktu di dalam transaksi

  2. GROUP BY tanggal berturut-turut dibatasi oleh kesenjangan

  3. Apakah karakter ini valid untuk XML?

  4. Lebih Banyak Kueri PostgreSQL Favorit Saya - dan Mengapa Mereka Juga Penting

  5. Tidak Dapat Terhubung ke PostgreSQL dengan PHP pg_connect()