openGauss MOT隔离级别

本文概述了openGauss1.0中MOT(多版本并发控制)对不同隔离级别的支持情况,包括READUNCOMMITTED、READCOMMITTED、REPEATABLE_READ、SNAPSHOT和SERIALIZABLE,以及它们各自的并发副作用。未来版本将增加对SNAPSHOT和SERIALIZABLE的支持。
摘要由CSDN通过智能技术生成

MOT隔离级别

即使MOT完全兼容ACID,openGauss 1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及MOT支持和不支持的内容。

表 1 隔离级别

隔离级别

说明

READ UNCOMMITTED

MOT不支持

READ COMMITTED

MOT支持

READ COMMITTED(读已提交)隔离级别保证任何正在读取的数据在上一次读取时都已提交。它只是限制读者看到任何中间数据、未提交数据,或脏读。数据被读取后可以自由更改,因此,读已提交隔离级别并不保证事务再次读取时能找到相同的数据。

SNAPSHOT

MOT不支持

SNAPSHOT(快照)隔离级别提供与SERIALIZABLE(可序列化)相同的保证,同时支持并发事务修改数据。相反,它迫使每个读者看到自己的世界版本(自己的快照)。不阻止并发更新使得编程非常容易,且可扩展性很强。然而,在许多实现中,这种隔离级别需要更高的服务器资源。

REPEATABLE READ

MOT支持

REPEATABLE READ(可重复读)是一个更高的隔离级别,除了READ COMMITTED隔离级别的保证之外,它还保证任何读取的数据都不能更改。如果一个事务再次读取相同的数据,它将找出该数据,不做更改,并且保证它可读取。

乐观模型使得并发事务能更新该事务读取的行。在提交时,该事务将验证REPEATABLE READ隔离级别是否被违反。若违反,则回滚该事务,必须重试。

SERIALIZABLE

MOT不支持

SERIALIZABLE(可序列化)隔离提供了更强的保证。除了REPEATABLE READ隔离级别保证的所有内容外,它还保证后续读取不会看到新数据。

它之所以被命名为SERIALIZABLE,是因为隔离非常严格,几乎有点像事务串行运行,而不是并行运行。

下表显示了不同隔离级别启用的并发副作用。

表 2 隔离级别启用的并发副作用

隔离级别

说明

不可重复读

幻影

READ UNCOMMITTED

READ COMMITTED

REPEATABLE READ

SNAPSHOT

SERIALIZABLE

在不久后将发布的版本中,openGauss MOT还将支持SNAPSHOT和SERIALIZABLE隔离级别。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值