当前位置:网站首页>Mysql的四个隔离级别是如何实现的 (简要)
Mysql的四个隔离级别是如何实现的 (简要)
2022-07-01 11:05:00 【菜鸟猫喵喵】
事务四大属性
分别是原子性、一致性、隔离性、持久性。
原子性:undolog日志来保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行的sql。
一致性:是由其他三大特性保证
隔离性:MVCC来保证,多版本并发控制
持久性:由redolog来保证,mysql修改数据的时候会在redolog中记录一份日志数据,就算数据没有保存成功,只要日志保存成功了,数据依然不会丢失。MySQL崩溃恢复功臣—Redo Log
事务的并发问题
脏读:事务A读取到了事务B中未提交的数据,当事务B回滚后,事务A读取到的数据都是脏数据。
不可重复读:事务A多次读取同一数据,但每次读取的值不同。这是因为事务B多次对数据进行更新和提交。
幻读:事务A在操作过程中,表数据多次新增或删除,并且新增或删除的数据影响到事务A的操作结果。
不可重复读侧重的是数据的修改,幻读侧重的是数据的新增或删除。解决不可重复读,只有锁住行,而解决幻读,需要锁住整张表。
mysql的隔离级别
数据库事务的隔离级别有4个,由低到高依次为
Read uncommitted(读未提交):脏读、不可重复读、幻读都存在。
Read committed(读已提交):解决了脏读问题,存在不可重复度、幻读问题。
Repeatable read(可重复读):解决了脏读、不可重复读问题,存在幻读。
Serializable(串行化):全部解决,但是并发效率最低。
隔离级别的实现
读未提交(RU:read-uncommitted):会读到没有提交的数据。
当隔离级别为未提交读RU时:
- 所有的读不加锁,读到的数据都是最新的数据,性能最好。
- 所有的写加行级锁,写完释放。
读已提交(RC:read-committed):使用MVCC技术,在每一行加入隐藏的字段(DB_TRX_ID:修改该行的最后一个事务的id,DB_ROLL_PTR:指向当前行的undo log日志,DB_ROW_ID:行标识,DELETE_BIT:删除标志),它实现了不加锁的读操作。
当隔离级别为RC时:
写操作:加行级锁。事务开始后,会在UNDO日志中写入修改记录,数据行中的隐藏列DATA_POLL_PTR存储指向该行的UNDO记录的指针。
读操作:不加锁。在读取时,如果该行被其它事务锁定,则顺着隐藏列DATA_POLL_PTR指针,找到上一个有效的历史记录(有效的记录:该记录对当前事务可见,且DELETE_BIT=0)。
可重复读(RR:repeatable-read):使用MVCC技术来实现不加锁的读操作。
- 写操作:加行级锁。事务开始后,会在UNDO日志中写入修改记录,数据行中的隐藏列DATA_POLL_PTR存储指向该行的UNDO记录的指针。
- 读操作:不加锁。在读取时,如果该行被其它事务锁定,则顺着隐藏列DATA_POLL_PTR指针,找到上一个有效的历史记录(有效的记录:该记录对当前事务可见,且DELETE_BIT=0)。
串行化(serializable):读写都会加锁。
从上面可以知道:实际上读已提交和可重复读级别的操作基本相同,而不同之处在于:行记录对于当前事务的可见性(可见性:即哪个版本的行记录对这个事务是可见的)。读已提交级别对数据的可见性是该数据的最新记录,可重复读基本对数据的可见性是事务开始时,该数据的记录。
边栏推荐
- node版本管理器nvm安装及切换
- 网站源码整站下载 网站模板源代码下载
- Network security learning notes 01 network security foundation
- 基金管理人的合规管理
- 个人商城二开逍遥B2C商城系统源码-可商用版/拼团拼购优惠折扣秒杀源码
- Huawei HMS core joins hands with hypergraph to inject new momentum into 3D GIS
- Sqlachemy common operations
- Give up high paying jobs in Shenzhen and go back home
- Is it safe to open a stock account online in 2022? Is there any danger?
- 金融壹账通拟7月4日香港上市:2年亏近30亿 市值蒸发超90%
猜你喜欢

Submission lottery - light application server essay solicitation activity (may) award announcement

Network security learning notes 01 network security foundation

十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘

node版本管理器nvm安装及切换

The first anniversary of the data security law, which four major changes are coming?

LeetCode.515. 在每个树行中找最大值___逐一BFS+DFS+按层BFS

Huawei equipment is configured with large network WLAN basic services

NC | 肠道细胞和乳酸菌共同作用来防止念珠菌感染

Node version manager NVM installation and switching

Global filter (processing time format)
随机推荐
. Net 5.0+ does not need to rely on third-party native implementation of scheduled tasks
2022年已经过去一半了,是不是很突然呢?
12 product management platforms that everyone is using
[matytype] insert MathType inter line and intra line formulas in CSDN blog
Get key code
[AI information monthly] 350 + resources! All the information and trends that can't be missed in June are here! < Download attached >
Half of 2022 has passed, isn't it sudden?
flutter Uint8List格式的图片和File格式图片的互相转换
[.NET6]使用ML.NET+ONNX预训练模型整活B站经典《华强买瓜》
基金管理人的内部控制
Can I choose to open an account on CICC securities? Is it safe?
达梦数据冲刺科创板:拟募资24亿 冯裕才曾为华科教授
网站源码整站下载 网站模板源代码下载
华为设备配置大型网络WLAN基本业务
CVPR 2022 | 基于密度与深度分解的自增强非成对图像去雾
关于Keil编译程序出现“File has been changed outside the editor,reload?”的解决方法
NeurIPS 2022 | 细胞图像分割竞赛正式启动!
Huawei HMS core joins hands with hypergraph to inject new momentum into 3D GIS
基金国际化的发展概况
十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘