MySQL SERIALIZABLE事务隔离级别读取未提交的值

时间:2019-10-11 16:36:50

标签: mysql sql transactions isolation

我的理解是,使用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

有人可以解释为什么我在这里看到未提交的值吗?我对隔离级别的理解不正确,或者我的脚本有缺陷吗?

0 个答案:

没有答案