Уровень изоляции транзакции MySQL SERIALIZABLE считывает незафиксированные значения - PullRequest
1 голос
/ 11 октября 2019

Насколько я понимаю, при уровне изоляции SERIALIZABLE я не вижу никаких незафиксированных данных, но мой простой вывод прототипа не имеет смысла для меня. Начальное значение «готово», и второе соединение запускает транзакцию, которая устанавливает значение «установить» БЕЗ фиксации. Затем при первом соединении я проверяю значение и вижу «set», которое является незафиксированным значением, а не то, что я должен видеть на уровне SERIALIZABLE.

Соединение 1:

set SESSION transaction isolation level SERIALIZABLE;
insert into test (name) values ('ready');

Соединение2:

SET autocommit = OFF;
set session transaction isolation level SERIALIZABLE;
start transaction;
update test set name = 'set' where id = 1;
-- THERE IS NO COMMIT HERE

Соединение 1:

select * from test; -- shows the single row with 'set' as the value

Может кто-нибудь объяснить, почему я вижу здесь незафиксированные значения? Мое понимание уровней изоляции неверно или, может быть, мой скрипт некорректен?

...