Позволете ми да прегледам вашите случаи и да обясня как работят тези ключалки:
1 случай
T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция поставя IX заключване на цялата таблица и X заключване на първите 5 реда.
T2 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция поставя IX (защото IX съвместим с IX) заключване на цялата таблица и се опитва да започне първите 5 реда, но не може да го направи, защото X не е съвместим с X
Значи сме добре.
2.1 корпус
T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция постави IX заключване на цялата таблица и X заключване на първите 5 реда.
T2 иска да избере някои редове от вашата тестова таблица. И не поставя никакви заключвания (тъй като InnoDB предоставя незаключващи четения)
2.1 корпус
T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция постави IX заключване на цялата таблица и X заключване на първите 5 реда.
T2 иска да актуализира (избере за актуализиране) някои редове от вашата тестова таблица. Поставете IS върху цялата маса и се опита да получи S заключване на реда и не успява, защото X и S са несъвместими.
Също така винаги имайте предвид нивото на изолация:различно ниво причинява различен механизъм за освобождаване/придобиване на ключалки
Надявам се да помогне