当前位置: 首页 > news >正文

MySQL 的事务隔离级别(重点面试题)

MySQL 的事务隔离级别(重点面试题⭐️⭐️⭐️)

SQL 标准定义了四种隔离级别,MySQL 全都支持. 这四种隔离级别分别是:

1.读未提交(READ UNCOMMITTED):

读未提交,也叫未提交读. 该隔离级别的事务可以看到其他事务中未提交的数据.

举个例子:

事务1,是用来提交数据的,事务2,是用来查询数据的。

事务1,插入了一条新的数据,但是事务1还没有提交(commit)。

此时,事务2,查询数据库中的数据。但是事务2查询到的数据,却包含了事务1未提交的数据

存在的问题:脏读

因为其他事务未提交的数据可能会发生回滚,但是该隔离级别却可以读到,我们把该级别读到的数据称之为脏数据,这个问题称之为脏读.

2.读已提交(READ COMMITTED):

读已提交,也叫提交读。
该隔离级别的事务能读取到已经提交事务的数据,该隔离级别不会有脏读的问题.

举个例子:

存在的问题:不可重复读

但由于在事务的执行中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询可能会得到不同的结果,这种现象叫做不可重复读

3.可重复读(REPEATABLE READ):

事务不会读到其他事务对已有数据的修改即使其他事务已提交。

即:在同一个事务当中,同一个 sql语句得到的结果是一样的

为什么是这样的?和 MVCC机制有关。

MVCC机制,建议百度,ai,搜索:

MVCC机制,如何实现 在同一个事务当中,同一个 sql语句,得到的结果是一样的?

MVCC 保证同一事务中同条 SQL 结果一致,核心就两点:

  1. 事务第一次查数据时,会生成一个「数据快照 + 可见性规则」(Read View)后续不管查多少次,都复用这个快照和规则,不看新数据
  2. 即便其他事务修改数据并且完成提交,当前事务看到的仍然是快照记录的旧版本数据

因此,在当前事务内部,同一条查询 SQL,多次执行得到的查询结果始终保持一致。

也就可以确保同一事务多次查询的结果一致,但是其他事务新插入的数据,是可以感知到的. 这也就引发了幻读问题.

可重复读,是 MySQL 的默认事务隔离级别

存在的问题:幻读

比如:此级别的事务正在执行时,另一个事务成功的插入了某条数据,但因为它每次查询的结果都是一样的,所以会导致查询不到这条数据。

自己重复插入同一条数据时又失败(因为唯一约束的原因)。

明明在事务中查询不到这条信息,但自己就是插入不进去,这个现象叫幻读.

画图来理解:

问题分析:

事务2,查询两次数据库表,没有查询到 新的数据

但是,当事务2 插入 事务1 最新插入的记录
insert语句,就会执行失败

原因:事务2的隔离级别不可重复读 无法查看到事务1插入后的数据,不知道这条记录,已经存在,所以事务2插入相同的记录,插入失败
这个问题:就叫做幻读

4.串行化(SERIALIZABLE):

序列化,事务最高隔离级别

存在的问题:事务的执行效率低

它会强制事务排序,使之不会发生冲突,从而解决了脏读,不可重复读和幻读问题,但因为执行效率低,所以真正使用的场景并不多。

一张图总结:


脏读:读未提交存在的问题
表现:事务2 读到 事务1没有提交的数据。

不可重复读:读已提交存在的问题
表现:事务1执行插入数据的操作,事务2,两次读到的数据不一致
第一次是事务1还没提交,事务2 读到了没有提交数据的记录
第二次是事务1提交了数据。事务2 读到了提交了数据的记录

幻读:可重复读存在的问题
表现:事务2读取不到事务1修改后的数据(插入数据),事务2自己进行相同操作(插入数据)时,会失败。

结尾

最后,如果这篇博客能帮到你的,请你点点赞,有写错了,写的不好的,欢迎评论指出,谢谢!

http://www.jsqmd.com/news/1406704/

相关文章:

  • 嘉兴装修公司市场实力盘点,2026哪些品牌综合实力更稳? - 优企甄选
  • 打造专属车牌识别模型:EasyPR-Java自定义数据集训练实战
  • BepInEx游戏插件框架安装实战全指南:版本判断、部署顺序与翻车自救
  • 连续版线性代数:Chebfun中函数级QR分解、SVD与特征值计算揭秘
  • 【Android面试】Kotlin语言专题
  • 数学建模实战:从数据预处理到模型调优的完整项目指南
  • ESP32-Camera驱动库实战指南:如何快速让ESP32拍出第一张照片并跑通完整视觉应用
  • 长途运输不踩坑,2026年8月同城物流服务商优选参考,禅城评价好的运输货运专线有哪些 - 企业权威推荐大使
  • Windows Terminal用户必收:Dracula PowerShell Console主题移植配置三步教程
  • 上海同居期间债权债务清算律所:2026年8月同居关系终止债务清算实务 - 品牌深度评测
  • SAP Business ByDesign赋能企业数智转型|无锡哲讯助力中型企业高效破局
  • 高校基层团支部品牌化建设实践:以数学拔尖班“数蕴”品牌为例
  • 一文读懂Tao框架消息机制:注册、序列化与反序列化完全指南
  • git-sync vs 传统备份方法:为什么bare clone能节省90%存储空间?
  • QQ空间历史说说如何完整备份?GetQzonehistory三步导出教程
  • 2026年寄大件行李怎么打包?保姆级攻略+避坑指南 - 快递物流资讯
  • 5分钟上手BepInEx:Unity游戏插件框架安装与使用终极指南
  • 跨省寄被褥行李到底要花多少钱?2026年最新省钱攻略分享 - 快递物流资讯
  • Photoshop 2020新手入门:从安装到核心工具与图层蒙版详解
  • 六种现代压缩算法,一个工具全搞定:7-Zip-Zstandard 实测与选型指南
  • brackets-git 调试与排错:开启 Debug 模式快速定位问题的终极方法
  • 上海执行回款律师事务所推荐:2026年8月执行到位率影响因素与法律手段 - 品牌深度评测
  • 数学建模竞赛论文深度解析:从优秀论文中提炼建模思维与方法论
  • 免费发布招聘信息:Vue.js Brasil Vagas 招聘方快速入门教程
  • 从数学建模到临床预测:机器学习在出血性脑卒中预后评估中的实战指南
  • 告别手绘缠论图,ChanlunX通达信插件7步完成自动画线
  • Windows 11显示缩放自动重置的根源分析与系统性修复指南
  • 存储卡文件乱码成因与数据恢复全攻略:从编码问题到文件系统修复
  • SwiftUIFlux实战项目:从零构建电影应用状态层的完整教程
  • 美赛数学建模C题论文拆解:从数据处理到模型优化的完整实战指南