版本链

简介: 【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没太大关系,所以不需要关注。

目录
相关文章
|
2月前
|
安全 Java Maven
如何解决安全提供者版本不兼容的问题
在Java环境中,当遇到安全提供者版本不兼容问题时,可通过更新JDK版本、替换或添加新的安全提供者JAR包、调整java.security文件中的配置等方法解决,确保系统安全性和稳定性。
28 1
|
4月前
Electron——常见动态链错误
Electron——常见动态链错误
52 0
|
7月前
|
中间件 API
中间件终止链
【5月更文挑战第17天】
40 1
|
7月前
|
Devops
以己度人,构建理解链
以己度人,构建理解链
42 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.
|
Linux 开发工具 Docker
比原链(Bytom)节点接入文档
系统要求 我们建议选择主要的几家云主机平台的VPS服务,运行比原链节点对算力没有要求,但是请配置尽可能大的磁盘空间以适应区块链数据未来增长的需要。 节点服务器最小配置: 操作系统: Windows/Linux/Docker CPU: 2核 内存: 2G 硬盘: 40G 网络: 独立IP,2MB带宽 防火墙: 开启46657端口 Ubuntu接入文档 1 节点服务器部署 1.
1461 0