Låt mig gå igenom dina fall och förklara hur dessa lås fungerar:
1 fall
T1 vill uppdatera några rader i din testtabell. Denna transaktion sätter IX-lås på alla tabeller och X-lås på de första 5 raderna.
T2 vill uppdatera några rader i din testtabell. Denna transaktion sätter IX (eftersom IX är kompatibelt med IX) lås på alla tabeller och försöker till de första 5 raderna men det kan inte göra det eftersom X inte är kompatibel med X
Så vi mår bra.
2.1 fall
T1 vill uppdatera några rader i din testtabell. Denna transaktion satte IX-lås på alla bord och X-lås på de första 5 raderna.
T2 vill välja några rader från din testtabell. Och den placerar inga lås (eftersom InnoDB tillhandahåller icke-låsande läsningar)
2.1 fall
T1 vill uppdatera några rader i din testtabell. Denna transaktion satte IX-lås på alla bord och X-lås på de första 5 raderna.
T2 vill uppdatera (välj för uppdatering) några rader från din testtabell. Placera IS på hela bordet och försöker få S-lås på raden och misslyckas eftersom X och S inte är kompatibla.
Var också alltid medveten om isoleringsnivån:olika nivåer gör att olika mekanismer frigör/skaffar lås
Hoppas det hjälper