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

UPDATE dengan SELECT, apakah akan mengunci setiap baris atau semua record SELECT

UPDATE sedang berjalan dalam transaksi - ini adalah atomic operasi, yang berarti bahwa jika salah satu baris gagal (karena kendala unik misalnya) itu tidak akan memperbarui salah satu dari 5000 baris. Ini adalah salah satu properti ACID dari database transaksional.

Karena itu UPDATE tahan kunci pada semua baris untuk seluruh transaksi. Jika tidak, transaksi lain dapat lebih lanjut memperbarui nilai baris, berdasarkan nilai saat ini (misalnya memperbarui catatan set nilai =nilai * '2'). Pernyataan ini harus menghasilkan hasil yang berbeda tergantung apakah transaksi pertama dilakukan atau dibatalkan. Karena itu, ia harus menunggu transaksi pertama untuk menyelesaikan semua 5000 pembaruan.

Jika Anda ingin melepaskan kunci, lakukan saja pembaruan dalam batch (lebih kecil).

P.S. autocommit mengontrol jika setiap pernyataan dikeluarkan dalam transaksi sendiri, tetapi tidak mempengaruhi eksekusi satu kueri




  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 - Pilih tanggal terbaru dari beberapa kemungkinan cap waktu?

  2. Cara memuat atribut dari model terkait dengan sequelize.js

  3. Presto setara dengan MySQL group_concat

  4. Pengecualian Tak Terduga:SQLSTATE[HY000] [1045] Akses ditolak untuk pengguna ****@'localhost' (menggunakan kata sandi:YA)

  5. MySQL memesan dengan string dengan angka