我的理解是,使用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
有人可以解释为什么我在这里看到未提交的值吗?我对隔离级别的理解不正确,或者我的脚本有缺陷吗?