前言
今天来讲一讲事务的隔离级别。
有关事务的基本介绍大家可以看这篇
MySQL事务(基础入门)(高频考点)
为了实现事务的隔离性,需要加锁,但是加锁会影响到性能,此时我们使用 MVCC 机制解决性能的问题。
事务的隔离级别
MySQL的存储引擎 InnoDB 有四种隔离级别,其中Innodb 默认的隔离级别是可重复读,各级的隔离级别解决不一样的事务并发情况。
事务的隔离级别有四种
- 读未提交
- 读已提交
- 可重复读
- 串行
其中隔离级别的强度是:串行>可重复读>读已提交>读未提交
读未提交
读到事务未提交的数据,这种隔离级别会出现“脏读、不可重复读、幻读”。
读已提交
读到事务已提交的数据,这种隔离级别会出现“不可重复读、幻读”。解决了“脏读”。
可重复读
两次读取的数据一致,这种隔离级别会出现“幻读”。解决了“脏读、不可重复读”。innodb 默认的隔离级别。
串行
最高的隔离级别,但是性能极慢,一般不使用。解决了“脏读、不可重复读、幻读”。
一般我们不支持使用串行,因为性能太慢了。
总结
事务的隔离级别有四种:1. 读未提交2. 读已提交3. 可重复读4. 串行
其中隔离级别的强度是:串行>可重复读>读已提交>读未提交
以此解决对应的问题。
读已提交解决脏读
可重复读解决脏读,不可重复读,innodb 默认的隔离级别
串行解决脏读,不可重复读,幻读
一般我们不支持使用串行,因为性能太慢了。
有启发点个赞 🌹
好文章不要错过,最近給大家分享的文章
MySQL的基础知识
1.MySQL的基础架构
2.SQL语句的执行流程
3.MySQL 的存储引擎
MySQL 索引
1.MySQL索引入门(一文搞定)
2.MySQL索引面试题(高频)
MySQL 事务
1.MySQL事务(基础入门)(高频考点)
预计下篇分享:事务相关面试题或 MVCC 机制的实现
本篇参考:小林coding
我是小辉,正在进行 Java 实习的 24 届应届毕业生。欢迎关注,持续分享,包括但不限于技术文章。全网同名…