专栏首页InvQ的专栏《sql必知必会》——读书笔记(4)

《sql必知必会》——读书笔记(4)

模拟mysql 几种隔离级别

sql几种隔离级别的定义

准备数据库和数据表

模拟的时候我们需要开两个 MySQL 客户端,分别是客户端1 和客户端 2

在客户端 1 中,我们先来查看下当前会话的隔离级别,使用命令…

mysql> SHOW VARIABLES LIKE 'transaction_isolation'

mysql默认可重复读

改为read uncommited

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

因为mysql 默认是自动提交事务的,

所以需要设置autocommit=0

mysql> SET autocommit = 0;

模拟脏读

新开一个mysql客户端2,开启一个事务,插入一个“吕布”

客户端2的设置仍然是默认的:

在客户端1中查询当前表:

发下客户端1读了客户端2还没有提交的事务数据,而客户端2也有可能立马回滚。

客户端1再次读表

模拟“不可重复读”

用客户端1查询id=1的数据

客户端2对id=1的进行修改

这时候,客户端1再读:

对于客户端1来说,发生了不可重复读。

模拟幻读

先用客户端1查询所有用户:

然后客户端2插入“吕布”

这时候再用客户端1查询,

发现多了一条数据,发生了幻读。

现在将客户度1的隔离级别设置为默认的不可重复读。

我们只用验证下幻读。

客户端1开启一个事务,进行查询所有英雄:

客户端2增加一个英雄赵云

此时还没有提交。 客户端1 再读(红框部分为第2次读):

说明,此时是不会发生 不可重复读 事件,换言之,是可重复读的。

我们在客户端2 中提交,

再次来到客户端1的事务中,发现仍然是读不到的。

,将客户端1的事务提交后,再次开启一个事务,进行查询可以查到。

mysql 5.7后 Repeatable-Read隔离级别通过MVCC和next-key lock来解决幻读。

同样,不可重复读也是如此

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在浏览器输入网址到网页打开数据经过的过程

    第1次握手:客户端通过将一个含有“同步序列号(SYN)”标志位的数据段发送给服务器

    MickyInvQ
  • Hibernate 的应用(Hibernate 的结构)?

    SessionFactory sessionFactory = new Configuration().configure().

    MickyInvQ
  • 使用JDBC连接MySQL数据库--典型案例分析(七)----批量插入员工信息

    向Emp表中批量插入100条数据,需要插入数据的列为empno,ename以及sal.这三个字段对应的数据分别为empno列的数据通过序列emp_seq自动生成...

    MickyInvQ
  • iOS 架构设计之冗余性思考

    做客户端开发的同学都知道业务需求千变万化,你永远不知道他未来会变化成什么样子。而作为开发人员也绝对不喜欢需求变更。我们极不情愿跟着这纷繁复杂的变化屁股后面,而疲...

    serena
  • 视频互联网直播/点播流媒体服务器RTMP协议分析及推流过程

    RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中...

    EasyNVR
  • WebSocket客户端连接成功后,返回的socket里有用的字段

    handshake - host - WebSocket服务器的IP地址和端口 origin - 客户端web应用的url user-agent:客户端操...

    Jerry Wang
  • C/S和B/S的区别

        C/S的学习已经结束有一段时间了,现在正在进行B/S的学习,那么C/S和B/S又有什么样的不同呢?

    令仔很忙
  • APP安全检测手册

    随着运营商新技术新业务的发展,运营商层面对安全的要求有所变化,渗透测试工作将会面临内容安全、计费安全、业务逻辑及APP等方面的挑战。随着运营商自主开发的移动AP...

    FB客服
  • 《Redis设计与实现》读书笔记(十八) ——Redis客户端属性设计与原理

    《Redis设计与实现》读书笔记(十八) ——Redis客户端属性设计与原理 (原创内容,转载请注明来源,谢谢) 一、概述 redis服务器是...

    用户1327360
  • 移动开发者的冬天真的来了

      前端的框架变化实在是太快了,当你还活在JQuery的年代,了解着bootstrap时候,有人已经在玩AngularJS了,而更有人已经开始玩React了,再...

    用户1289394

扫码关注云+社区

领取腾讯云代金券