mysql 中的脏读与幻读_mysql中脏读、不可重复读、幻读以及四种隔离级别的浅显理解…

这时,我在黑色背景对话(A)中开始了一笔交易,并将ID为1的相应名称更改为” cathy”:

可以看出,在会话B中,读取了A的更改数据,但未提交会话A。这太脏了。会话A回滚后,会话B读取无效数据。

其次,将隔离级别设置为已提交,以演示防止脏读和不可重复读现象的作用

跳过设置隔离级别的过程(必须为两个会话都修改隔离级别,记住要提交或回滚上述事务),首先显示my_test表的当前状态,如下所示:

会话A将ID 1的余额更改为500后,会话B读取:

您可以看到会话B仍在读取原始数据。此时,在提交会话A的事务后,会话B读取同一事务或原始数据:

这表明可重复读取隔离级别可以防止不可重复现象。我们在此隔离级别演示了幻象读取。

首先,B启动一个新事务,将数据插入到my_test表中,但不提交,如图所示:

A想要将这两行数据的余额更改为2000,但是当他尚未完成时,B提交:

这是幻影阅读。我本来想修改我看到的两行,但是我更改了三行。这就像一种幻想。

四,将隔离级别设置为可序列化,演示防止幻像读取的效果

同样,设置隔离级别。

B开始一个新事务,插入数据但不提交,如图所示:

您会发现它不允许查看,并且等待一段时间后将超时。这解决了第三点的魔术读取问题,这等效于锁定整个表。锁定一旦锁定,在提交完成之前将不会释放该锁定。这也导致效率降低。

如果有错误,请纠正我~~

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览33031 人正在系统学习中 相关资源:phantomjs-dirty:PhantomJS的脏兼容键值数据库-其它代码类资源…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月22日
下一篇 2021年1月22日

相关推荐