• 脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
  • 不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
  • 幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

SQL 标准定义了四个隔离级别:**

  • READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读

  • READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

  • REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生

  • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读

这里需要注意的是:Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别

事务隔离机制的实现基于锁机制和并发调度。其中并发调度使用的是MVVC(多版本并发控制),通过保存修改的旧版本信息来支持并发一致性读和回滚等特性。

因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是 READ-COMMITTED(读取提交内容): ,但是你要知道的是InnoDB 存储引擎默认使用 **REPEATABLE-READ(可重读)**并不会有任何性能损失。

InnoDB 存储引擎在 分布式事务 的情况下一般会用到**SERIALIZABLE(可串行化)**隔离级别。

什么是脏读?幻读?不可重复读?相关推荐

  1. mysql 中的脏读与幻读_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  2. mysql 可重复读 悲观锁_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  3. MySQL --- 19♪ 进阶15 TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读

    #TCL事物控制语言 : /*   Transaction control language : 事物控制语言   事务:     一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要 ...

  4. mysql悲观锁会有脏数据吗_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  5. 数据库几个事务相关的知识点(脏读幻读不可重复读以及如何避免)

    0. 设置MYSQL的隔离界别 # 查询数据库当前事务隔离级别 mysql> select @@global.transaction_isolation,@@transaction_isolat ...

  6. 脏读幻读不可重复读的区别

    1.脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 例如: 张三的工资为5000,事务A中把他的工 ...

  7. 事务的4种隔离级别,3大问题,脏读幻读不可重复读

    一.数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四 ...

  8. 脏读 幻读 不可重复读 及其解决方法

    一个事务读到另外一个事务还没有提交的数据,我们称之为脏读.解决方法:把事务隔离级别调整到READ COMMITTED 一个事务先后读取同一条记录,但两次读取的数据不同,我们称之为不可重复读.解决方法: ...

  9. mysql数据库的事务 acid 隔离级别 脏读 脏写 幻读 不可重复读

    事务的四大特征 原子性(atomicity):要么全部提交(commit),要么全部回滚(rollback) 一致性(consistency):数据从一个合法状态转换成另一种合法状态 隔离性(isol ...

  10. mysql不可重复读和重复读_MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读...

    MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的. 数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不 ...

最新文章

  1. python unix时间戳格式化输出_python正常时间和unix时间戳相互转换的方法
  2. Redis专题-缓存穿透、缓存雪崩、缓存击穿
  3. wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏
  4. vantUI应用(Tabbar标签页)返回上一页的失效问题
  5. Python与Redis交互
  6. 关于表空间、Schema和用户
  7. python的第三方库是干什么用的-Python最强大的第三方库,你有必要了解一下!
  8. 嵌入式linux学习笔记(2)
  9. s7200cpu224xp手册_西门子S7-200模块CPU224XPCN可编程控制器
  10. springboot幼儿园幼儿基本信息管理系统毕业设计源码201126
  11. Goolgle推荐   onActivityResult的替代方式
  12. 济南大学 计算机学院,于自强
  13. 新唐(Nuvoton)8051单片机开发指南
  14. 技术人员的狂欢 | 看雪2020第四届安全开发者峰会顺利落幕
  15. tyvector在matlab中代表,MATLAB曲线绘制
  16. Chrome关闭密码检查弹窗:更改您的密码 某个网站或应用发生了数据泄露导致您的密码外泄
  17. 茧数SCRM营销自动化行业案例 | 教育行业
  18. postman使用教程1
  19. Excel技巧--数据不能按照1-100来排列
  20. 【windows11】win11 简单配置及快捷键

热门文章

  1. Visio用UML2.2模板包
  2. 实习日志 - 第二天
  3. 【浙江大学C小程week6知识点整理】
  4. 项目>点餐系统 总结概述
  5. 互联网时代,企业经营管理面临的挑战有哪些?
  6. 有苦有乐的算法 --- 自定义一个栈,实现压栈(push)、弹栈(pop)、获取站内最小值(getmin)
  7. html网页打不开二级网页,遇到二级网页打不开怎么办 讲解二级页面打不开的处理方法...
  8. 凉凉,第1个倒闭的投资项目,比呀比,海外直邮电商
  9. 云仓是如何运行的?如何一件代发的?
  10. Django和layim实现websocket