MySql事务隔离级别-未提交读(READ UNCOMMITTED)

it2025-05-29  5

准备工作

DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `id` int(11) NOT NULL, `num` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行步骤

 SESSION ASESSION BT1SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; T2START TRANSACTION; T3 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;T4 START TRANSACTION;T5

SELECT * FROM t1;

-- 结果为空

 T6 INSERT INTO `t1` VALUES (1,  100);T7

SELECT * FROM t1;

-- 结果不为空,查询到了T6时刻添加的数据

 T8 ROLLBACK;T9

SELECT * FROM t1;

-- 结果为空

 

 

问题所在:SESSION A在 T7 时刻,发生了脏读,读取到了SESSION B未提交的数据。

 

SQL解释

-- 设置会话隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; -- 开启事务 START TRANSACTION; -- 提交事务 COMMIT; -- 回滚事务 ROLLBACK;

 

 

 

 

 

最新回复(0)