01.读未提交

Read Uncommitted | 未提交读

事务中的修改,即使该事务未提交,对其他的事务也是可见的。所有事务都可以看到其他未提交事务的执行结果,又称为脏读,在实际数据库事务中,脏读会破坏数据的一致性,对业务产生极大影响,因为它的性能也不比其他级别好多少,所以一般不推荐采用 READ UNCOMMITED 作为数据库事务的隔离级别。读取未提交的数据,也被称之为脏读(Dirty Read);实际上,某些数据库支持该级别,它可以防止脏写,但不防止脏读。

-- 会话 1
SET SESSION TRANSACTION ISOLATION LEVEL red uncommitted; -- 设置会话隔离级别为未提交读
start transaction;
select * from xxx; -- 此时为空,事务未提交

-- 会话2
start transaction;
insert into xxx values(1); -- 未提交事务中,插入数据

-- 会话 1
select * from xx; -- 读取到会话2中未提交数据,即脏读
下一页