Mysql事务隔离级别解读和分析
创始人
2024-05-24 13:42:30
0

文章目录

  • 事务ACID
    • 事务隔离级别

事务ACID

事务分为四类:原子性,持久性,一致性,隔离性

A:原子性
所有操作必须成功,否则就被撤销
在mysql日志库中会有一个undo.log(回滚日志)日志,记录了每一步做了什么,如果发生回滚,对于每个insert执行delete,对于每个update 执行相反的update,对于每个delete,执行insert ,重新回到事务执行前的状态

C:一致性
事务执行完毕后,数据库的完整性约束没有被破坏
保持原子性,隔离性,持久性成功执行

I:隔离性
确保不同事务之间不会有影响,并发情况下的事务互不影响。
分为两方面:
写操作对写操作的影响,锁机制保证隔离性
读操作对读操作的影响,MVCC保证隔离性
锁机制:
某个事务要修改数据之前,获得该锁,其他事务要修改该数据需要等该锁释放,从而达到锁机。
锁:行锁和表锁。数据多的时候用表锁

D:持久性
对数据库的改变是永久性的 来源:为了解决mysql宕机,缓存Buffer
Pool中数据写不进去,redo.log被引入来解决这个问题,用来代替宕机的mysql来执行上面的操作,等mysql重启时候恢复,再读取redo.log中相关的操作
在mysql不宕机时,直接把buffer Pool中的修改的加载到mysql,这一步叫做刷脏

事务隔离级别

脏读:

脏读:读到了其他事务未提交的数据,可能会回滚的数据,可能不存在的数据,可能最终不会存在数据库中的数据

可重复读:

在一个事务内,刚开始读到的数据和事务结束前任意时刻读到的同一批数据一致

不可重复读:

在同一事务内,不同时刻读到的同一批数据时不一致的

幻读:

两个事务修改修改同一个数据,一个数据修改后先提交,另一个数据之后提交,对于后者查询的时候会发现某些数据没有起效果,让用户感到迷惑,其实是前者用户修改插进来的

共有四种隔离级别:读未提交,读提交,可重复读,串行化
从左到右,隔离强度主键增强,性能逐渐变差,
在这里插入图片描述
补充:

  1.  读提交可以完美解决读未提交出现的脏读问题
    
  2.  两个事务进行可重复读操作,开始读了之后,事务发生改动,提交后,剩余的一个事务也会变,但是对于插入操作不会,由此另一个事务会出现幻读,但是Mysql可重读读操作已经解决了幻读问题
    
  3.  对于串行化,解决了脏读,幻读,可重复读问题,但是效果最差,因为它必须按照顺序执行,后一个事务必须等待前一个事务执行完毕才可以执行
    
  4. 读未提交和串行化是不用考虑隔离级别的,读未提交不加锁限制,串行化下相当于单线程执行,效果不好,读提交解决了脏读问题,行锁解决了并发更新的问题,Mysql在可重复读级别解决了幻读问题,是通过行锁和间隙锁的组合Next-Key锁实现的。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...