关于脏读,不可重复读,幻读的理解
- 首先,http://blog.csdn.net/yuxin6866/article/details/52649048 这篇博客关于不可重复读和幻读的内容介绍的十分清晰
- 以下为自己理解:
事务总结:
事务的特性:★★★
ACID
原子性:事务里面的操作单元不可切割,要么全部成功,要么全部失败
一致性:事务执行前后,业务状态和其他业务状态保持一致.
隔离性:一个事务执行的时候最好不要受到其他事务的影响
持久性:一旦事务提交或者回滚.这个状态都要持久化到数据库中
不考虑隔离性会出现的读问题
脏读:在一个事务中读取到另一个事务没有提交的数据
不可重复读:在一个事务中,两次查询的结果不一致(针对的update操作)
虚读(幻读):在一个事务中,两次查询的结果不一致(针对的insert操作)
通过设置数据库的隔离级别来避免上面的问题(理解)
read uncommitted 读未提交 上面的三个问题都会出现
read committed 读已提交 可以避免脏读的发生
repeatable read 可重复读 可以避免脏读和不可重复读的发生
serializable 串行化 可以避免所有的问题
起初隔离级别为read uncommitted 读未提交;a,b两个会话,分别开启两个事务,然后a向b转了500元钱,但a未提交该事务,
此时b查看,发现多了500.然后a回滚事务,b再查看账户,发现根本就没有多500.这便是脏读。
脏读便是可以读取到另一个事务尚未提交的数据。
如果我们此时将隔离级别提升为read committed 读已提交,便可避免脏读。同样b两个会话,分别开启两个事务,然后a向b转了500元钱,
但a未提交该事务,此时b查看,依旧是原钱数.
但此时,如果a 提交事务,b再去查看,发现此时多了500,对b而言,在一个事务中,两次查询的结果不一致,这便是不可重复读。
如果我们此时将隔离级别提升为repeatable read 可重复读,可以避免脏读和不可重复读的发生。同样a 提交事务,b再去查看,发现
依旧是原钱数,b只能结束当前事务,在开启一个新事务,才能查询到数据的变化,这al便避免了不可重复读。
如果我们设置了seriizable串行化,就相当于锁表,某一时间内只允许一个事务访问该表。
关于脏读,不可重复读,幻读的理解相关推荐
- mysql 脏读 不可重复读 幻读_mysql事务隔离级别/脏读/不可重复读/幻读详解
一.四种事务隔离级别 1.1read uncommitted 读未提交 即:事务A可以读取到事务B已修改但未提交的数据. 除非是文章阅读量,每次+1这种无关痛痒的场景,一般业务系统没有人会使用该事务隔 ...
- 脏读,不可重复读,幻读区别
脏读 脏读又称无效数据读出.一个事务读取另外一个事务还没有提交的数据叫脏读. 例如:事务T1修改了一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因Roll ...
- oracle 脏读,脏读 不可重复读 幻读
序言 脏读.不可重复读.幻读这几个概念开始接触和学习的时候是在大学学习数据库系统的时候,那时候对这几个专业名词的理解停留在概念文字上,并没有真正使用过实践中,最近工作中涉及到这几个概念方面的知识,就来 ...
- mysql不可重复读和重复读_MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读...
MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的. 数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不 ...
- 脏读,不可重复读,幻读区别和避免
在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题. 名词解析和解决方案 脏读 脏读又称无效数据读出(读出了脏 ...
- 对脏写、脏读、不可重复度、幻读的理解笔记
写在正文前面,以下仅MySQL小白进阶 用于记录对MySQL事务并发执行可能导致的4个问题的理解. 读https://www.cnblogs.com/CodeBear/p/12710670.html后 ...
- mysql系列:加深对脏读、脏写、可重复读、幻读的理解
关于相关术语的专业解释,请自行百度了解,本文皆本人自己结合参考书和自己的理解所做的阐述,如有不严谨之处,还请多多指教. **不可重复读的重点是修改: **同一事务,两次读取到的数据不一样. 幻读的重点 ...
- mysql可重复读和幻读的理解
mysql可重复读和幻读的理解 可重复读和幻读的定义 最后总结 参考资料 很多教程和书籍对mysql的可重复读和幻读的解释都比较含糊,本文结合原理和其他的考证,深入分析下. 这里讨论的引擎是常用的In ...
- Mysql如何实现隔离级别 - 可重复读和读提交 源码分析
Abstract 本文会(1) 演示Mysql的两种隔离级别. (2) 跟着mysql的源代码来看看它是怎么实现这两种隔离级别的. Mysql的隔离级别 当有多个事务并发执行时, 我们需要考虑他们之 ...
- MySQL可重复读和读已提交实现原理,深入理解MVCC。
1.隔离级别 MySQL中隔离级别分为4种,提未交读.读已提交.可重复读.串行化.同时MySQL默认隔离级别为可重复读. 图片 查看MySQL隔离级别 SELECT @@tx_isolation 设置 ...
最新文章
- K8S Runtime CRI OCI contained dockershim 理解(转)
- 怎样能做好百度竞价推广?不妨参考下这篇竞价推广的日常工作流程
- 拼装机器人感想_学习制作机器人的感想作文500字6篇
- 数据中心的未来:一体化无人值守
- win10 radmin远程不了_不用QQ也能电脑远程,win10这隐藏功能太良心了!真后悔发现太晚...
- 【华为云 ModelArts-Lab AI实战营】第二期
- JAVA环境配置 ECLIPSE配置(转)
- python网络编程项目_python网络编程(1):客户端与网络编程简介
- Python学习 Week2 part1
- banana pro 板子
- 【从零开始学架构-李运华】06|复杂地来源:可扩展性
- [C0] 人工智能大师访谈 by 吴恩达
- 推荐一款低代码报表开发工具,操作类似Excel
- 游戏电影——《落花辞》
- 微信相册显示服务器偷懒,微信上这样「偷懒」,比使唤男朋友还省心!
- 如何在微信小程序上开发一个「蚂蚁森林」和「蚂蚁庄园」结合体?
- ROS配置和使用“北通”无线手柄,主从机远程控制JP-Chassis底盘
- Derivation of matrix‘s eigenvalue and inverse matrix
- 在 IIS 上构建静态网站
- Telnet 1521端口连接失败问题,经过四天的努力终于解决!