隔离性——事务

事务的四种隔离级别
未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据
提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)
可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读
串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞

 

这里主要比较可重复读和读已提交的去呗
1 可重复读 mysql默认的事务隔离级别
在navicate打开2个页面模拟2个连接
在页面1 开启事务,查询一条数据 username = ck123


2 页面2 更新这条sql,然后查询,可知道结果已经更改为ck1234


3.重新回到页面一,在之前事务中继续查询(此时要把start transaction去掉,否则就是开启新的事务了),结果依旧是ck123


4.在页面1中提交事务,再次查询 就能查到别人更新的结果


二.读已提交 oracle 默认的隔离级别,在mysql中先将2个连接都设置为
读已提交

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SELECT @@transaction_isolation;
1
2

在页面1中开启事务,查询数据

在页面2中更改数据

页面1中查询,可以直接读到更改的数据源

————————————————
版权声明:本文为CSDN博主「chenkangck50」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43866043/article/details/121532192

posted @ 2022-05-08 10:33  张测试  阅读(65)  评论(0)    收藏  举报