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

数据库事务中的脏读、不可重复读、幻读

数据库事务中的脏读、不可重复读、幻读

这三个现象都是在多个事务并发执行时,由于隔离性控制不当而出现的问题。


1. 脏读

  • 定义:一个事务读到了另一个尚未提交的事务修改的数据。
  • 核心:读到了“脏”的、可能不存在的中间数据。
  • 发生场景:事务隔离级别为 读未提交 时。
  • 例子
    1. 事务A 将某条记录的 余额 从 100 元 修改为 200 元(但尚未提交)。
    2. 此时,事务B 读取 这条记录,读到的 余额200 元
    3. 事务A 因为某种原因(如出错)回滚 了操作,余额 恢复为 100 元。
    4. 结果:事务B 读到了一个根本不存在的数据(200元),这就是脏读。

2. 不可重复读

  • 定义:在同一个事务中,两次读取同一条数据,得到的结果不一致。
  • 核心:针对的是同一条记录更新操作。
  • 发生场景:事务隔离级别为 读已提交 时,可以避免脏读,但可能出现不可重复读。
  • 例子
    1. 事务A 第一次读取某条记录的 余额,得到 100 元。
    2. 此时,事务B 更新 了这条记录,将 余额 改为 200 元,并提交了事务。
    3. 事务A 再次读取同一条记录,此时读到的 余额 是 200 元。
    4. 结果:事务A 在同一个事务内,两次读取同一条数据,结果却不一致。这对于需要在事务内保持数据一致性的场景(如对账)是致命的。

3. 幻读

  • 定义:在同一个事务中,两次执行相同的查询,返回的结果集记录数量不一致。
  • 核心:针对的是数据集的插入或删除操作,感觉像出现了“幻觉”一样的新数据。
  • 发生场景:事务隔离级别为 可重复读 时,可以避免脏读和不可重复读,但可能出现幻读。
  • 例子
    1. 事务A 第一次查询 年龄 < 30 的员工,返回了 10 条记录。
    2. 此时,事务B 插入 了一条新的员工记录,其年龄为 25 岁,并提交了事务。
    3. 事务A 再次执行完全相同年龄 < 30 查询,此时返回了 11 条记录。
    4. 结果:事务A 感觉就像发生了“幻觉”,凭空多出来一条数据。

总结与对比

现象核心问题操作类型一句话概括
脏读读到了未提交的数据任何修改读到了“即将可能不存在”的数据。
不可重复读同一记录内容被修改UPDATE同一条数据,两次读的内容不一样。
幻读结果集数量发生变化INSERT, DELETE同样的查询,两次读到的记录条数不一样。

与事务隔离级别的关系

SQL标准定义了4个事务隔离级别,用于解决上述问题:

隔离级别脏读不可重复读幻读
读未提交可能发生可能发生可能发生
读已提交不会发生可能发生可能发生
可重复读不会发生不会发生可能发生
可序列化不会发生不会发生不会发生

注意:在 MySQL 的 InnoDB 引擎中,通过 MVCC(多版本并发控制)Next-Key Locking 机制,在 可重复读 隔离级别下就已经可以很大程度上避免幻读的发生。因此,MySQL 的“可重复读”比标准SQL定义的更严格。

http://www.dtcms.com/a/424831.html

相关文章:

  • 网站的绝对路径怎么做西安站
  • NuttX 实现细节指南
  • 苏州建行网站首页程序员和网站建设
  • 四川住房城乡和城乡建设厅网站网页翻译怎么弄
  • 做小型企业网站多少钱中国机械采购平台
  • 建设中专网站html网站开发图片素材
  • 第四部分:VTK常用类详解(第117章 vtkTubeFilter管状过滤器类)
  • 宁波建设集团股份有限公司招聘宁波网络关键词优化费用
  • 西安开发网站建设交通运输部:全力保障交通网络畅通
  • C语言入门教程 | 第六讲:指针详解 - 揭开C语言最神秘的面纱
  • 蓝桥杯嵌入式2——串口的使用
  • 对象创建流程
  • 如何提高网站流量和转化
  • 如何删除网站黑链望野王绩拼音
  • 做国外有那些网站著名设计公司排名
  • 企业网站管理系统模版源码一对一直播交友app开发
  • 【完整源码+数据集+部署教程】棉花产量预测分割系统: yolov8-seg-bifpn
  • 淘宝客网站域名怎么制作wap网站
  • 网站常用后台路径影视广告公司宣传片
  • 常见问题 网站建设什么是网络设计编辑
  • 网站原创内容佛山正规网站建设哪家好
  • 深圳市官网网站建设哪家好重庆安全员证书查询系统
  • 网站建设栏目添加电子商务网站设计与...
  • vps可以做多少网站乐陵森林酒店家具
  • 江门市住房和城乡建设局门户网站发帖那个网站好 做装修的
  • 【完整源码+数据集+部署教程】飞机尾迹分割系统: yolov8-seg-rtdetr
  • 搜关键词可以搜到的网站怎么做专业建站公司加盟
  • 网站建设考评表广州门户网站制作
  • mac虚拟机安装linux教程
  • 金华企业网站推广jq网站特效插件