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

Mengatur nilai satu kolom dari semua baris sangat lambat

Di InnoDB, update pernyataan mengunci setiap baris yang mereka pindai. Ini berarti bahwa untuk memperbarui 200 baris Anda, itu harus membuat 350.000 kunci tingkat baris, sambil menjaga kunci rollback pada saat yang sama dan memberikan nilai sebelumnya ke setiap transaksi yang membaca nilai yang sudah diubah (karena transaksi tidak berkomitmen dan perubahan belum final)

MyISAM di sisi lain mengunci seluruh tabel.

Jadi, jika Anda perlu memperbarui semua baris, kunci seluruh tabel, dan Anda akan mendapatkan kinerja yang jauh lebih baik (Anda tidak memerlukan kunci tingkat baris)

Tetapi lebih baik lagi, berikan klausa WHERE, seperti yang Anda lakukan, dan InnoDB akan memperoleh kunci hanya untuk baris yang cocok (serta beberapa kunci celah di pohon indeks, tetapi ini di luar cakupan pertanyaan)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Id acak di sqlalchemy (tiang)

  2. Terhubung ke database mysql melalui SSH melalui PHP

  3. Tetapkan nilai =nilai +1 di rak buku.js

  4. SELECT / GROUP BY - segmen waktu (10 detik, 30 detik, dll)

  5. Apakah ada gunanya menggunakan MySQL LIMIT 1 saat menanyakan bidang yang diindeks/unik?