验证mysql事务

事务等级划分

事务等级脏读不可重复读幻读
read uncommitted(读未提交)
read committed (读已提交) X
repeatable read (重复读) X X
serializable (序列化) X X X

1. 准备阶段

set global transaction isolation level read committed;       #全局
set session transaction isolation level READ UNCOMMITTED;    #当前session
set transaction isolation level read uncommitted;            #仅对下一个事务生效

     REPEATABLE READ #重复读
     READ COMMITTED  #读已提交
     READ UNCOMMITTED #读未提交
     SERIALIZABLE     #序列化读

CREATE TABLE `user` (
`id` int NOT NULL COMMENT '主键',
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.验证事务

开启两个会话,使用多个会话的好处是每次只需要执行一次更改事务就行了。当然也可以只开一个,那样每次都需要 去修改事务
  1. 两个会话首先都设置成 读未提交
  2. 然后查看当前事务等级
set session transaction isolation level READ UNCOMMITTED;
select @@transaction_isolation;

两个都需要显示事务为

 

会话1  开启事务,更改数据库 

BEGIN 

UPDATE `user` SET `name` = 'zhangsna-12888eee3' WHERE id = 1



# COMMIT

会话2 查看到 会话1 还没提交的更改

结果  显而易见的 读未提交,可以读取到该事务还未提交的事务

 

其他的可以自行去验证,方法都是一样的

 

posted @ 2023-03-13 15:12  一个人ro  阅读(52)  评论(0)    收藏  举报