版本链

简介: 【8月更文挑战第5天】

和隔离级别密切相关的概念是脏读、幻读和不可重复读 这三个读异常。

  • 脏读:读到了别的事务还没有提交的数据。之所以叫做脏读,就是因为未提交数据可能会被回滚掉。
  • 不可重复读:在一个事务执行过程中,对同一行数据读到的结果不同
  • 幻读:事务执行过程中,别的事务插入了新的数据并且提交了,然后事务在后续步骤里读到了这个新的数据。

用一个表用来描述隔离级别和三种读异常的关系:

理论上,可重复读是没有解决幻读的,但是因为MySQL因为使用了临键锁,因此它的可重复读隔离级别已经解决了幻读问题。

此外还有一个相似的概念:快照读和当前读。
快照读就是在事务开始的时候创建了一个数据的快照,在整个事务过程中都读这个快照;
当前读,则是每次都去读最新数据。

MySQL在可重复读这个隔离级别下,查询的执行效果和快照读非常接近。

为了实现MVCC,InnoDB引擎给每一行都加了两个额外的字段trx_idroll_ptr

  • trx_id:事务ID,也叫做事务版本号。MVCC里面的V指的是这个数字,每一个事务在开始的时候就会获得一个ID,然后这个事务内操作的行的事务ID,都会被修改为这个事务的ID
  • roll_ptr:回滚指针,InnoDB通过roll_ptr把每一行的历史版本串联在一起。

实际上,InnoDB引擎还隐式地插入了另外一个列row_id,如果你没有设置任何主键,那么这个列就会被当作主键来使用。但是它其实和MVCC没太大关系,所以不需要关注。

目录
相关文章
|
17天前
|
安全 Java Maven
如何解决安全提供者版本不兼容的问题
在Java环境中,当遇到安全提供者版本不兼容问题时,可通过更新JDK版本、替换或添加新的安全提供者JAR包、调整java.security文件中的配置等方法解决,确保系统安全性和稳定性。
|
3月前
Electron——常见动态链错误
Electron——常见动态链错误
43 0
|
6月前
|
中间件 API
中间件终止链
【5月更文挑战第17天】
36 1
|
6月前
|
Devops
以己度人,构建理解链
以己度人,构建理解链
35 0
|
运维 安全 算法
TRX链/BSC链/ARB链智能合约系统开发方案逻辑丨详细项目丨规则玩法丨案例详情丨源码出售
需求分析:与客户沟通,了解其业务需求和期望,明确系统的功能和性能要求。确定在哪个链上进行开发(TRX链、BSC链还是ARB链)。
|
安全 区块链
TRX链/BSC链/ARB链/Matic马蹄链公链智能合约系统开发指南需求丨步骤逻辑丨规则方案丨案例开发丨项目程序丨源码说明
Chain selection and environment construction: Select suitable public chains as development environments, such as TRX chains, BSC chains, ARB chains, or Matic horseshoe chains. Establish a corresponding development environment, including node deployment, development tools, and testing network.
|
Web App开发 区块链
Remix无法连接私有链问题解决方案
Remix无法连接私有链问题解决方案
488 0
|
监控 JavaScript Java
APM调用链产品对比
调用链跟踪--能够分布式的抓取多个节点的业务记录,并且通过统一的业务id(traceId,messageId,requestId等)将一次业务在各个节点的记录串联起来,方便排查业务的瓶颈或者异常点。
726 0
|
关系型数据库 MySQL 数据库
|
Web App开发 测试技术 程序员
预发布环境,Tag发布机制和可重复的部署过程
导读:作者吕毅在blog.lvscar.info发表了本篇文章,文中分享了Joel Test 、预发布环境、Tag发布机制以及可重复的部署过程等。内容如下: 周末聚会,无意间聊起建筑行业。自己是搞软件开发的,我们的行业从建筑设计/施工过程中借鉴了大量的概念,隐喻,名词。
2623 0