Mysql隔离级别演示

本文详细介绍了数据库事务的隔离级别,包括读未提交、读已提交和可重复读。通过实例展示了脏读(读取未提交数据)、不可重复读(数据在不同事务中读取时发生变化)以及幻读(在相同事务中多次读取数据时,新记录出现导致数据不一致)的概念。理解这些概念对于数据库管理和应用开发至关重要。
摘要由CSDN通过智能技术生成

实验前做的事情:关闭自动提交

开启两个命令行窗口,在两个命令行串口执行以下命令

select @@autocommit;   //查看是否开启自动提交(默认是1,开启)
set @@autocommit = 0;     //关闭自动提交

在这里插入图片描述
在这里插入图片描述

一、读未提交(产生脏读)

在两个命令行都执行以下命令:
在这里插入图片描述
可以看到,当左边窗口修改数据但还没提交的时候,右边窗口就已经可以读到未提交的数据了,这种读到未提交的数据就是脏读

二、读已提交(不可重复读)

在这里插入图片描述
当隔离级别为read Commited时,左边窗口修改数据没提交之前,右边窗口的数据不会改变;当左边窗口数据提交之后,右边窗口读数据时才会发生改变。
在这里插入图片描述
此时,右边的事务并没有结束,并且也没做任何修改,但读取到的数据发生了变化,这种现象就是不可重复读。我觉得就是重复读取数据时,数据不一致,所以不能重复读取。所以叫不可重复读

三、可重复读(幻读)

在这里插入图片描述

当隔离级别为repeatable read时,左边窗口修改数据并且提交之后,右边读取到的数据依然保持不变。此时,右边的数据可以重复读取,不会产生改变(除非右边窗口的事务自己修改数据)。
在这里插入图片描述
当在右边窗口执行左边窗口同样的命令时,会报错,应该都能看懂是什么错。。。问题来了:右边窗口读取到的数据没有id=1的,但是却不能插入数据,其实id=1的数据已经存在了,只不过是右边窗口读取不到,这就是幻读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值