当前位置:   article > 正文

mysql 可重复读和读提交的区别_读已提交与可重复读差别

读已提交与可重复读差别

事务的四种隔离级别
未提交读(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中查询,可以直接读到更改的数据源
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/239567
推荐阅读
相关标签
  

闽ICP备14008679号