Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Deadlock dengan sisipan yang memunculkan pemicu

Utas 2 memegang kunci bersama pada baris di tabel pengguna.

Kemudian utas 1 mencoba mendapatkan kunci eksklusif pada baris yang sama, dan masuk ke kunci tunggu.

Tapi thread 1 tidak akan sempat time out, karena thread 2 kemudian mencoba mengeskalasi lock nya menjadi exclusive... tapi untuk melakukan itu, dia harus menunggu thread 1 yang di lock wait, tapi sedang menunggu utas 2.

Mereka saling menghalangi.

Itu kebuntuan.

Server memilih transaksi untuk dimatikan, sehingga mereka tidak saling memblokir secara tidak perlu.

Deteksi kebuntuan memungkinkan satu utas untuk segera berhasil dengan mengorbankan yang lain. Kalau tidak, mereka berdua akan terjebak dalam kunci, menunggu sampai salah satu dari mereka mati karena menunggu terlalu lama.

Anda berada dalam mode komit otomatis, tetapi tentu saja, itu tidak berarti Anda tidak sedang bertransaksi. Setiap kueri dengan InnoDB masih ditangani dalam suatu transaksi, tetapi dengan komit otomatis, transaksi dimulai secara implisit saat kueri mulai dijalankan dan dikomit secara implisit saat berhasil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL antar klausa tidak inklusif?

  2. MySQL – Dapatkan Biaya Permintaan Terakhir Menggunakan SHOW STATUS LIKE 'Last_Query_Cost'

  3. Memantau Database Anda dengan MySQL Enterprise Monitor

  4. Bagaimana cara menerapkan pembaruan tampilan otomatis segera setelah ada perubahan dalam basis data di AngularJs?

  5. Pemicu MySQL untuk memperbarui bidang berdasarkan jumlah kolom dari tabel lain