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

cara menghindari kebuntuan di mysql

Untuk pemahaman saya, pilih tidak memperoleh kunci dan seharusnya tidak menjadi penyebab kebuntuan.

Setiap kali Anda memasukkan/memperbarui/atau menghapus baris, kunci diperoleh. Untuk menghindari kebuntuan, Anda kemudian harus memastikan bahwa transaksi bersamaan tidak memperbarui baris dalam urutan yang dapat mengakibatkan kebuntuan. Secara umum, untuk menghindari kebuntuan Anda harus mendapatkan kunci selalu dalam urutan yang sama bahkan dalam transaksi yang berbeda (misalnya selalu tabel A terlebih dahulu, kemudian tabel B).

Tetapi jika dalam satu transaksi Anda memasukkan hanya dalam satu tabel, kondisi ini terpenuhi, dan ini biasanya tidak menyebabkan kebuntuan. Apakah Anda melakukan sesuatu yang lain dalam transaksi?

Namun kebuntuan dapat terjadi jika ada indeks yang hilang . Ketika sebuah baris di sisipkan/perbarui/hapus, database perlu memeriksa batasan relasional, yaitu memastikan relasinya konsisten. Untuk melakukannya, database perlu memeriksa kunci asing di tabel terkait. Itu mungkin menghasilkan kunci lain yang diperoleh selain baris yang dimodifikasi. Pastikan untuk selalu memiliki indeks pada kunci asing (dan tentu saja kunci utama), jika tidak, dapat mengakibatkan kunci tabel alih-alih kunci baris . Jika table lock terjadi, lock contention lebih tinggi dan kemungkinan deadlock meningkat.

Tidak yakin apa yang sebenarnya terjadi dalam kasus Anda, tetapi mungkin ini membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelompokkan baris berdasarkan Interval Band Tahun

  2. DB apa untuk database besar?

  3. MYSQL:Prosedur dengan pernyataan if

  4. Mengakses mysql XAMPP melalui Python

  5. Bantuan Kotak Centang PHP dan HTML