首页 > 其他分享 >openGauss MOT隔离级别

openGauss MOT隔离级别

时间:2024-04-28 10:12:14浏览次数:13  
标签:读取 READ MOT openGauss 级别 SERIALIZABLE 隔离

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隔离级别。

标签:读取,READ,MOT,openGauss,级别,SERIALIZABLE,隔离
From: https://www.cnblogs.com/renxyz/p/18163161

相关文章

  • openGauss MOT高吞吐量
    MOT高吞吐量MOT高吞吐量测试结果如下。Arm/鲲鹏2路128核性能下图是华为Arm/鲲鹏2路128核服务器TPC-C基准测试的结果。一共进行了四类测试:MOT和openGauss基于磁盘的表各进行了2次测试。其中两项测试是在单节点(无高可用性)上执行,这意味着没有向备节点执行复制。其余两个测......
  • openGauss 约束
    约束约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过CREATETABLE语句),或者在表创建之后规定(通过ALTERTABLE语句)。约束可以是列级或表级。列级约束仅适用于列,表级约束......
  • openGauss 物化视图
    物化视图物化视图是相对普通视图而言的。普通视图是虚拟表,而物化视图实际上就是存储SQL执行语句的结果,可以直接使用数据而不用重复执行查询语句,从而提升性能。按照刷新方式物化视图分为两种:全量物化视图:仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物......
  • openGauss 游标
    游标为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。语法格式定义游标CURSORcursor_name[BINARY][NOSCROLL][{WITH|WITHOUT}HOLD]FORquery;......
  • openGauss 语法
    语法默认情况下,数据库安装成功,登录后,可以使用\help语句查看所有openGauss的SQL语法。openGauss=#\helpAvailablehelp:ABORTALTERTABLECREATEDATABASECREATETEXTSEARCHCONFIGURATIONDROPOPE......
  • openGauss 数据类型
    数据类型数值类型表1列出了所有的可用类型。表1整数类型名称描述存储空间范围TINYINT微整数,别名为INT1。1字节0~255SMALLINT小范围整数,别名为INT2。2字节-32,768~+32,767INTEGER常用的整数,别名为INT4。4字节-2,147,483,648~+2,14......
  • openGauss 索引
    索引索引是一个指向表中数据的指针。一个数据库中的索引与一本书的索引目录是非常相似的。索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引:经常执行查询的字段。在连接条件上创建索引,对于存在多字段连接的查询,建议......
  • openGauss 锁
    锁如果需要保持数据库数据的一致性,可以使用LOCKTABLE来阻止其他用户修改表。例如,一个应用需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以对表进行锁定,这样将防止数据不被并发修改。LOCKTABLE只在一个事务块的内部有用,在事务结束时就会被释放。语法格......
  • openGauss MOT-SQL覆盖和限制
    MOTSQL覆盖和限制MOT设计几乎能够覆盖SQL和未来特性集。例如,大多数支持标准的PostgresSQL,也支持常见的数据库特性,如存储过程、自定义函数等。下面介绍各种SQL覆盖和限制。不支持的特性MOT不支持以下特性:跨引擎操作:不支持跨引擎(磁盘+MOT)的查询、视图或事务。计划于2021年实......
  • openGauss MOT-VACUUM清理
    MOTVACUUM清理使用VACUUM进行垃圾收集,并有选择地分析数据库,如下所示。【openGauss】在openGauss中,VACUUM用于回收死元组占用的存储空间。在正常的openGauss操作中,删除的元组或因更新而作废的元组不会从表中物理删除。只能由VACUUM清理。因此,需要定期执行VACUUM,特别是在频繁......