Mysql的快照读和当前读
当前读
读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加 锁。对于我们日常的操作,如:select ... lock in share mode(共享锁),select ... for update、update、insert、delete(排他锁)都是一种当前读。
由此可知,当前读通过next-key来解决幻读问题。
快照读
简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据, 不加锁,是非阻塞读。
- Read Committed:每次select,都生成一个快照读,
- Repeatable Read:开启事务后第一个select语句才是快照读的地方。
- Serializable:快照读会退化为当前读。
快照读sql提取的数据是MVCC根据readview来选择的。不同的隔离级别,生成ReadView的时机不同:
- READ COMMITTED :在事务中每一次执行快照读时生成ReadView。
- REPEATABLE READ:仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。
在RR的隔离级别下下,快照读本身就解决了幻读问题。
即在RR的隔离级别下,MVCC和锁一起解决了幻读问题
事务的四大特性
- 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环 境下运行。
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
四大特性中,redo log解决了持久性(Durability)问题,undo log解决了原子性(Atomicity),MVCC和锁解决了幻读问题,最终一起实现了终极目标——解决了一致性(Consistency)问题。
Mysql的快照读和当前读相关推荐
- mysql 快照读 幻读,InnoDB的MVCC如何解决不可重复读和快照读的幻读,当前读用next-key解决幻读...
InnoDB默认的隔离级别是RR(可重复读),可以解决脏读和不可重复读,只解决了快照读情况下的幻读问题,当前读情况下解决幻读问题得靠next-key锁. mysql如何实现避免幻读: 在快照读读情况下 ...
- mysql 快照 理解_MySQL - 当前读和快照读
当前读和快照读 InnoDB 给每一个事务生成一个唯一事务 ID 的方法称为生成快照,因此这种场景称为快照读. 但是对于更新数据不能使用快照读,因为更新数据时如果使用快照读会可能会覆盖其他事务的更改. ...
- MySQL怎么运行的系列(十一)快照读、锁定读、半一致性读 和 加锁语句分析
本系列文章目录 展开/收起 MySQL怎么运行的系列(一)mysql体系结构和存储引擎 MySQL怎么运行的系列(二)Innodb缓冲池 buffer pool 和 改良版LRU算法 Mysql怎么运 ...
- mysql快照读取_MySQL 快照读和当前读
在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读: 1.快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数 ...
- mysql rr 更新失败_RR 级别下 update 操作的是快照读还是当前读?
我们知道在 RR 级别下,重复的 select 操作,读取的值都会是一致的.即便在两次 select 操作的中间,有一个事务 B 修改了值,但是在事务 A 中 select 读取的值还是一致的. 那么 ...
- MySQL Transaction--快照读和当前读
在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读: 1.快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数 ...
- MySQL 到底是怎么解决幻读的?
作者:LastSun https://www.cnblogs.com/wdy1184/p/10655180.html 一.什么是幻读 在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读.而 ...
- MySQL探秘(六):InnoDB一致性非锁定读(隔离性)
一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过多版本控制(MVVC)读取当前数据库中行数据的方式.如果读取的行正在执行DELETE或UPDATE操作 ...
- MySQL RR隔离级别解决幻读问题?
首先,讲mysql的隔离级别之前需要复习一下事务的四个特性 (注:mysql存储引擎InnoDB)(待完善) 事务的四个特性(ACID): 原子性(Atomicity) 一致性(Consistency ...
- MVCC和快照读丶当前读
文章目录 MVCC的实现原理 版本链 ReadView MVCC实现不同隔离级别 Read Committed隔离级别下MVCC工作原理 Repeatable Read隔离级别下MVCC工作原理 快照 ...
最新文章
- 1050. 螺旋矩阵(25)
- Win7下安装ubuntu (双硬盘用户加强版)
- html5和前端精要(1)-架构与基础(1)
- 约瑟夫环问题(带密码)
- IE6-IE11兼容性问题列表及解决办法
- Google Guava EventBus和Java 7 WatchService用于事件编程
- 2018年10个最佳项目管理工具及链接
- 转录组差异表达分析工具Ballgown
- 2017.10.6 Java命名规范及使用情况
- Gensim库的使用——Doc2Vec模型(一)介绍与使用
- 网页打开慢,甚至突然打不开?图片刷新不出来?多半是DNS的问题!
- 蓝牙学习之①:调戏小米手环
- 食堂总是拥挤不堪?解决用餐拥挤,教你一招
- android协议分析,对一个apk的协议分析
- cocosLua 之cocosStudio动画
- 地理信息创业公司的生存之道
- 五分钟教你屏蔽百度广告
- 谁给我回家的路费我就跟谁上床!
- 模型设计有趣软件学习
- TCP Flags标志位介绍