Ситуация такая, есть строка, есть транзакция 1, которая ее меняет (апдейт). Как я помню, все апдейты в мускуле inplace, т.е. в индексе. Коммита пока что нет.
Тогда параллельная транзакция 2 (которая стартанула после 1) с уровнем READ UNCOMMITTED сможет увидеть это изменение (ибо read view нет, чтение тупо из индекса), а параллельная транзакция 3 (которая так же стартанула после 1) с уровнем READ COMMITTED \ REPEATABLE READ пойдет в undo лог и там восстановит прежнюю версию строки, так по идее? Т.е. когда апдейт строки происходит (до коммита) - старая версия строки дублится в undo... и в случае роллбека так же из undo воскрешается