事务的特性:

原子性:指处于同一个事务中的多条语句是不可分割的。

一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如转账,转账前两个账户余额之和为2k,转账之后也应该是2K。

隔离性:指多线程环境下,一个线程中的事务不能被其他线程中的事务打扰

持久性:事务一旦提交,就应该被永久保存起来。

事务隔离性问题:

如果不考虑事务的隔离性,会出现以下问题:

脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。

不可重复读(虚读):指一个线程中的事务读取到了另外一个线程中提交的update的数据。

幻读:指一个线程中的事务读取到了另外一个线程中提交的insert的数据。

级别越高,数据越安全,但性能越低。

不可重复读与幻读比较相似,都是在一个事务中多次读取到不同的数据。网络上的总结如下:

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

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

所谓幻读,是指事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交。

幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样.一般解决幻读的方法是增加范围锁RangeS,锁定检锁范围为只读,这样就避免了幻读。简单来说,幻读是由插入或者删除引起的。

大致的区别在于不可重复读是由于另一个事务对数据的更改所造成的,而幻读是由于另一个事务插入或删除引起的。

不可重复读(虚读)和幻读的差别:

从总的结果来看, 似乎两者都表现为两次读取的结果不一致.

但如果你从控制的角度来看, 两者的区别就比较大:

对于前者, 只需要锁住满足条件的记录

对于后者, 要锁住满足条件及其相近的记录

mysql 虚读幻读区别_MySQL脏读、虚读、幻读相关推荐

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

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

  2. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster等版本的区别

    MySQL分为多种版本如Community.Enterprise.Cluster和Workbench等,MySQL不同版本有什么区别?LAMPLNMP分享: MySQL版本区别 ● MySQL Com ...

  3. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster有何区别

    MySQL版本Enterprise/Community/Cluster有何区别 发布时间:2020-05-28 14:23:34 来源:PHP中文网 阅读:278 作者:三月 下面讲讲关于MySQL版 ...

  4. mysql企业版集群版区别_MySQL版本Enterprise/Community/Cluster等版本的区别

    MySQL分为多种版本如Community.Enterprise.Cluster和Workbench等,MySQL不同版本有什么区别?LAMPLNMP分享: MySQL版本区别 ● MySQL Com ...

  5. mysql 读未提交数据_mysql事务之未提交读(Read uncommitted)

    1,Read uncommitted定义: wiki上的定义如下: 未提交读(READ UNCOMMITTED)是最低的隔离级别.允许脏读(dirty reads),事务可以看到其他事务"尚 ...

  6. mysql 申请读锁 再申请写锁_MySQL源代码:如何对读写锁进行处理

    2.加锁 加锁函数由宏定义,实际调用函数为: 1)写锁 [cpp] # define rw_lock_x_lock(M)                                         ...

  7. mysql多实例和主从区别_mysql多实例的安装以及主从复制配置

    mysql多实例的安装以及主从复制配置 1.mysql多实例的安装 1)配置文件 # cat /etc/my.cnf.multi [mysqld_multi] mysqld=/usr/bin/mysq ...

  8. mysql复合主键的区别_MySQL 的联合主键与复合主键区别

    MySQL 的联合主键与复合主键区别 复合主键就是指你表的主键含有一个以上的字段组成 . 例如; create table test ( name varchar(19), id number, va ...

  9. mysql悲观锁和乐观区别_MySQL悲观锁和乐观锁的区别是什么

    MySQL悲观锁和乐观锁的区别是什么 区别如下: 1.概念不同 乐观锁( Optimistic Locking): 顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,&qu ...

最新文章

  1. 面试八股文最新版出炉!一周肝了15个新篇章……
  2. 《深入理解计算机系统》读书笔记七:浮点数表示
  3. 软件测试之Selenium IDE
  4. TensorFlow-CIFAR10 CNN代码分析
  5. 本周Github精选 | 这12个最新AI开源项目,你一定要收下
  6. 以太网供电技术/有源以太网技术POE简单介绍
  7. iPhone 14 Pro太空黑渲染图曝光:感叹号挖孔+直角边框
  8. 9W人脸清洗的问题--20170208
  9. Ansible(二)——基本环境的部署以及常用模块的使用
  10. 21天jenkins打卡前置准备:linux环境
  11. Mysql简单的存储过程怎么写
  12. 每个初学者都应该搞懂的问题
  13. 轴承后缀ce和ca_轴承cc和ca与cde4有什么区别
  14. 她力量系列八丨陈丹琦:我希望女生能够得到更多的机会,男生和女生之间的gap会逐渐不存在的
  15. 手机屏幕镜像翻转软件_iPhone拍出来的视频倒过来了怎么办?这个系统自带工具全搞定,它还有更多神奇绝技!...
  16. 写作之: 算法流程图latex代码和范例
  17. 网站管理,网站管理技巧的步骤
  18. 苹果mac启动台变成问号_MAC开机停止响应并出现闪烁问号的解决方法
  19. 洛谷P4158 [SCOI2009]粉刷匠 题解
  20. win11如何打开热点?

热门文章

  1. 【Linux 中国】GNOME 新文本编辑器尝鲜
  2. 绝对定位和相对定位的区别?
  3. Win10笔记本电脑盖上屏幕怎么设置不息屏?
  4. 001_把图形如何移动到原点位置
  5. java 正则 不可见字符_正则表达式匹配不可见字符
  6. 盘点2016国际八大APP开发网站
  7. ORACLE数据库回滚
  8. 如何实现害虫识别和牛场24小时无人监控?AI+农业话题咱们唠一唠
  9. 我们是什么时候开始,不再一有空闲就玩游戏了呢?
  10. 环氧树脂胶粘剂性能和特性?什么是环氧结构胶?