Biarkan saya memeriksa kasus Anda dan menjelaskan cara kerja kunci ini:
1 kasus
T1 ingin memperbarui beberapa baris di tabel pengujian Anda. Transaksi ini menempatkan kunci IX pada semua tabel dan kunci X pada 5 baris pertama.
T2 ingin memperbarui beberapa baris di tabel pengujian Anda. Transaksi ini menempatkan kunci IX (karena IX kompatibel dengan IX) di semua tabel dan mencoba 5 baris pertama tetapi tidak dapat melakukannya karena X tidak kompatibel dengan X
Jadi kami baik-baik saja.
2.1 kasus
T1 ingin memperbarui beberapa baris di tabel pengujian Anda. Transaksi ini menempatkan kunci IX pada semua tabel dan kunci X pada 5 baris pertama.
T2 ingin memilih beberapa baris dari tabel pengujian Anda. Dan itu tidak mengunci apapun (karena InnoDB menyediakan pembacaan yang tidak mengunci)
2.1 kasus
T1 ingin memperbarui beberapa baris di tabel pengujian Anda. Transaksi ini menempatkan kunci IX pada semua tabel dan kunci X pada 5 baris pertama.
T2 ingin memperbarui (pilih untuk pembaruan) beberapa baris dari tabel pengujian Anda. Tempatkan IS di seluruh tabel dan coba mengunci S pada baris dan gagal karena X dan S tidak kompatibel.
Juga selalu waspadai tingkat isolasi:tingkat yang berbeda menyebabkan mekanisme yang berbeda untuk membebaskan/memperoleh kunci
Semoga membantu