В Mysql с уровнем изоляции Repeatable по умолчанию,
В сеансе 1 транзакция 1,
start transaction;
update student_details set name='uuu' where dept='mech';
Изменения были сделаны успешно. Здесь индексируется столбец «dept».
После этого в сеансе 2 транзакция 2,
start transaction;
update student_details set name='kkk' where dept='ece';
Здесь также были успешно внесены изменения.
Но если я сделаю то же самое без индексации столбца 'dept', то транзакция 2 в сеансе 2 ожидает, пока транзакция 1 в сеансе 1 не будет зафиксирована или произойдет откат.
Я знаю, что при повторяемом уровне изоляции при чтении, когда мы выполняем оператор «update ... where ...», каждая читаемая строка блокируется исключительной блокировкой (блокировкой записи). Поэтому транзакция 2 ожидания ждет пока 1 не снимает блокировку.
Итак, что же на самом деле происходит, когда мы индексируем столбец и делаем запрос 'update ... where ..'? почему то же самое не происходит с индексами ??