Laat me je zaken doornemen en uitleggen hoe deze sloten werken:
1 zaak
T1 wil enkele rijen in uw testtabel bijwerken. Deze transactie zet IX lock op alle tafels en X lock op de eerste 5 rijen.
T2 wil enkele rijen in uw testtabel bijwerken. Deze transactie zet IX (omdat IX compatibel is met IX) op alle tafels en probeert de eerste 5 rijen te krijgen, maar het lukt niet omdat X niet compatibel is met X
Dus het gaat goed met ons.
2.1 geval
T1 wil enkele rijen in uw testtabel bijwerken. Deze transactie plaatste IX lock op alle tafels en X lock op de eerste 5 rijen.
T2 wil enkele rijen uit uw testtabel selecteren. En het plaatst geen sloten (omdat InnoDB niet-vergrendelende uitlezingen biedt)
2.1 geval
T1 wil enkele rijen in uw testtabel bijwerken. Deze transactie plaatste IX lock op alle tafels en X lock op de eerste 5 rijen.
T2 wil enkele rijen uit uw testtabel bijwerken (selecteren voor update). Plaats IS op de hele tafel en probeer S lock op de rij te krijgen en faalt omdat X en S niet compatibel zijn.
Houd ook altijd rekening met het isolatieniveau:verschillende niveaus veroorzaken een ander mechanisme om sloten te bevrijden/verkrijgen
Ik hoop dat het helpt