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

MySQL InnoDB:Perbedaan Antara `UNTUK UPDATE` dan `LOCK IN SHARE MODE`

Saya telah mencoba untuk memahami perbedaan antara keduanya. Saya akan mendokumentasikan apa yang saya temukan dengan harapan dapat bermanfaat bagi orang berikutnya.

Keduanya LOCK IN SHARE MODE dan FOR UPDATE memastikan tidak ada transaksi lain yang dapat memperbarui baris yang dipilih. Perbedaan antara keduanya adalah bagaimana mereka memperlakukan kunci saat membaca data.

LOCK IN SHARE MODE tidak mencegah transaksi lain membaca baris yang sama yang dikunci.

FOR UPDATE mencegah pembacaan penguncian lainnya dari baris yang sama (pembacaan non-penguncian masih dapat membaca baris itu; LOCK IN SHARE MODE dan FOR UPDATE sedang mengunci bacaan).

Ini penting dalam kasus seperti memperbarui penghitung, di mana Anda membaca nilai dalam 1 pernyataan dan memperbarui nilai di yang lain. Di sini menggunakan LOCK IN SHARE MODE akan memungkinkan 2 transaksi untuk membaca nilai awal yang sama. Jadi jika penghitung bertambah 1 oleh kedua transaksi, jumlah akhir mungkin hanya bertambah 1 - karena kedua transaksi awalnya membaca nilai yang sama.

Menggunakan FOR UPDATE akan mengunci transaksi ke-2 dari membaca nilai hingga yang pertama selesai. Ini akan memastikan penghitung bertambah 2.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah Collation Kolom tanpa kehilangan atau mengubah data?

  2. Berhasil menghubungkan Klien ke server MySQL

  3. Dapatkan gaji tertinggi kedua untuk setiap orang di mysql

  4. Hitungan baris dalam Doktrin 2

  5. Bagaimana cara INSERT record atau UPDATE jika sudah ada?