读提交:
务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。造成了不可重复读(虚读)。
可重复读:

事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交。事务A再读取时,却发现数据发生了变化。造成了幻读。

很多人都容易混淆不可重复读和幻读的概念,当然,本人也是纠结了好久,下面就说一下我的理解。

不可重复读真正含义应该包含虚读和幻读。

所谓的虚读,也就是大家经常说的不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

一种更易理解的说法是:在一个事务内,多次读同一个数据。在这个事务还没有结束时,另一个事务也访问该同一数据。那么,在第一个事务的两次读数据之间。由于第二个事务的修改,那么第一个事务读到的数据可能不一样,这样就发生了在一个事务内两次读到的数据是不一样的,因此称为不可重复读,即原始读取不可重复。

所谓幻读,是指事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交。
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样.一般解决幻读的方法是增加范围锁RangeS,锁定检锁范围为只读,这样就避免了幻读。

简单来说,幻读是由插入或者删除引起的。


事务的4中隔离级别,可以参考我的另一篇文章:http://blog.csdn.net/tolcf/article/details/49283575

读提交和可重复读区别相关推荐

  1. 「Mysql 事务 隔离级别」 读提交和可重复读的区别

    一.前提 首先我们应该先明确 Mysql的四种隔离级别和四种对应的现象 隔离级别: 读未提交.读已提交.可重复读.串行化 现象: 脏读.丢失修改.不可重复读.幻读 二.先说结论 读提交和可重复读都是一 ...

  2. MySQL数据库中,在读已提交和可重复读这两个不同事务隔离级别下幻读的区别

    目 录 1. 前 言 1.1 并发事务存在的问题 1.2 事务的隔离级别 1.3 快照读和当前读 2. 不同事务隔离级别下幻读的区别 2.1 读已提交下的幻读 2.2 可重复读下的幻读 2.2.1 情 ...

  3. 数据库事务处理差异:可提交读和重复读区别

    数据库隔离级别:读未提交  读已提交  可重复读  序列化 oracle     sql server 读已提交 mysq                       可重复读 https://clo ...

  4. mysql的读已提交和可重复读(Read Committed和Repeatable Read隔离级别)

    1.共享锁和排他锁 1.1.共享锁 1.2.排他锁 1.3.总述 2.MVCC 2.1.隐藏字段 2.2.Read View 2.3.Undo log 2.4.update的具体流程 2.5.可见性比 ...

  5. MySQL是如何实现读已提交和可重复读的——MVCC原理

    先来看一下MySQL的事务隔离级别: 隔离级别 脏读 不可重复读 幻读 读未提交 有 有 有 读已提交 无 有 有 可重复读 无 无 有 串行化 无 无 无 MySQL有四种隔离级别:读未提交.读已提 ...

  6. MVCC如何实现数据库读已提交和可重复读这两种隔离级别?

    文章目录 隐藏列 undo log ReadView 读已提交和可重复读的实现 我们都知道Mysql有四种事务隔离级别: 读未提交 读已提交 可重复读 串行化 这四个隔离级别的特点就不多赘述了,这次主 ...

  7. mysql读提交和重复读区别_读已提交和可重复读的区别 命令行测试

    可重复读:两个事务进行数据操作他们是互不干扰的 ,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是不改变的. 读已提交:两个事务进行数据操作,事务先A进行数据查 ...

  8. 幻读与不可重复读区别

    不可重复读与幻读比较相似,都是在一个事务中多次读取到不同的数据.网络上的总结如下 不可重复读:所谓的虚读,也就是大家经常说的不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据 ...

  9. mysql 读已提交、可重复读原理(mvcc、readview)

    https://blog.csdn.net/qq_41388308/article/details/88583968 readview的文章https://baijiahao.baidu.com/s? ...

最新文章

  1. 高性能JavaScript笔记三(编程实践)
  2. Docker+Mongodb
  3. Windows下Git的安装和基本使用、搭建Git服务器
  4. 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表
  5. linux 操作mysql 数据库命令_在Linux上用命令怎么连接数据库
  6. Python中的多线程
  7. android多接口请求参数,okhttp3 使用json参数post方式请求接口数据(android)
  8. 计算机网络技术期末考试复习总结
  9. QML工作笔记-NumberAnimation、RotationAnimation、Timer综合使用
  10. 挤爆了!故宫首次晚间开放:预约票平台一度502
  11. 51单片机——蓝牙远程点灯
  12. CKEDITOR富文本编辑器+AJAX+JQUERY+ListView综合应用
  13. 如何备份光猫html文件夹,华为光猫分区备份,还原,制作固件教程
  14. 还想打马赛克掩盖身份?人工智能让你告别打码时代
  15. 解决能上QQ却不能上网的问题
  16. 那一年我是如何从功能测试跨入自动化测试的,绝对让你不虚此行!
  17. 2个相同的 stm32 can通讯不成功_CAN通讯系列--CAN通讯简介1
  18. Vscode 修改左侧 资源管理器的面板大小
  19. 通过Dreamweaver建立一个简单的网页音乐盒模型效果/css/h5/
  20. okhttp之 header详解

热门文章

  1. stm32cube,hal库来实现PS2手柄数据发送
  2. 网页上生成一个印章。
  3. Windows10 电源选项中没有 唤醒时需要密码
  4. 高考大数据:全国31省高考难度,哪个才是地狱模式?
  5. oracle创建存储过程,hibernate调用
  6. Html表格实现行上下移动
  7. ____ To All Girls  Boys
  8. 【2020.11.30提高组模拟】剪辣椒(chilli)
  9. WebGL简易教程(五):图形变换(模型、视图、投影变换)
  10. 【GNN报告】Mila实验室/蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理