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

mySQL - Penguncian tabel vs Penguncian baris

Jika Anda memiliki indeks di tblAreas.AreaID, maka setiap transaksi yang menyertakan WHERE tblAreas.AreaID in (...) akan mengunci indeks untuk entri tersebut. Tidak masalah apakah baris itu sendiri ada atau tidak. Kunci itu akan mencegah transaksi lain memasukkan entri apa pun untuk ID tersebut. Jadi saya rasa Anda tidak perlu melakukan salah satu dari saran Anda. Hanya menanyakan untuk melihat apakah semua area tersedia untuk wilayah Anda akan memberi Anda kunci yang Anda butuhkan untuk memasukkan wilayah Anda secara atom.

Ini mungkin sedikit masalah karena ID area Anda tidak unik di seluruh game, jadi mungkin ada beberapa serialisasi palsu antara area dengan ID yang sama di peta yang berbeda. Mungkin membantu untuk menambahkan mapID ke tabel tblAreas Anda sehingga Anda dapat membuat indeks (mapID, areaID) untuk mencari sebagai gantinya, yang akan menghindari tabrakan palsu pada indeks. (Itu akan mendenormalisasi skema Anda, yang mungkin tidak ingin Anda lakukan karena alasan lain.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa lapisan abstraksi basis data yang layak untuk Python

  2. Menggunakan Laravel Raw Query dengan Placeholder

  3. PDO::__construct():Server mengirim charset (255) yang tidak diketahui klien. Tolong, laporkan ke pengembang

  4. MySQL salah hasil dengan GROUP BY dan ORDER BY

  5. MySQL JOIN mengembalikan bidang NULL