栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL学习(1)-当前读和快照读

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL学习(1)-当前读和快照读

前言

在MySQL中读取数据有两种方式,一种是当前读,另一种是快照读,理解这两种读取数据的方式有助理解更多MySQL相关锁的知识。

当前读

当前读,顾名思义就是读取当前最新的数据,并且对读取的数据加锁,阻止其他事务同时修改相同的记录,避免出现安全问题。
下面这些场景会使用当前读:

  • update、delete、insert
  • select … lock in share mode (主动加共享锁)
  • select … for update (主动加排他锁)
快照读 (一致非锁定读)

A consistent read means that InnoDB uses multi-versioning to present to a query a snapshot of the database at a point in time.

一致读取意味着InnoDB使用多版本控制在某个时间点向查询提供数据库的快照,也可以简称为快照读。
相关说明:

  • InnoDB在隔离级别读已提交级别和可重复读级别上使用
  • 一致读不会在访问的表上加任何锁,其他会话可以同时修改表上的数据。
  • 读已提交级别下,每次select都会生成一个快照。
  • 可重复读级别下,开启事务之后第一个select才会生成快照,而不是事务一开始就生成快照。

快照读的实现方式通过多版本控制MVCC机制实现,感兴趣的小伙伴可以去了解。

小结
  • 可以简单理解需要加锁的是当前读,快照读不需要加锁。
  • 快照读意味每次读取的都是快照,快照意味数据相同。
  • 快照读通过MVCC实现。
  • 快照读在读已提交隔离级别和可重复读隔离级别都有。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号