ITPub博客

首页 > 数据库 > > GaussDB100 面向应用开发的功能--支持事务

GaussDB100 面向应用开发的功能--支持事务

作者:GaussDB_数据库 时间:2020-03-03 09:35:41 0 删除 编辑

支持版本

GaussDB 100 V300R001C00初次引入。

特性简介

GaussDB 100支持事务,数据处理具备完整性、一致性。

特性描述

数据库事务是指作为单个逻辑工作单元执行的一系列动作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久修改数据。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以确保业务逻辑正确且不丢失。一个逻辑工作单元要成为事务,必须满足ACID(原子性、一致性、隔离性和持久性)属性。
  • A:Atomicity原子性

事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。

  • C:Consistency一致性

事务完成时,数据必须处于一致状态,数据的完整性约束没有被破坏,事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

  • I: Isolation隔离性

事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

  • D:Durability持久性

在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

GaussDB 100支持完整的ACID特性,并支持如下三种事务隔离级别:

  • READ COMMITTED(默认):读已提交隔离级别,事务只能读到已提交的数据而不会读到未提交的数据,这是缺省值。

    SELECT查询看到一个在查询开始运行的瞬间该数据库的一个快照。不过,SELECT看得见其自身所在事务中前面更新的执行结果。即使它们尚未提交,在同一个事务里两个相邻的SELECT命令可能看到不同的快照,因为其它事务会在第一个SELECT执行期间提交。

    读已提交模式里,每个新的命令都是从一个新的快照开始的,而这个快照包含所有到该时刻为止已提交的事务,因此同一事务中后面的命令将看到任何已提交的其它事务的效果。这里关心的问题是在单个命令里是否看到数据库里绝对一致的快照。

    读已提交模式提供的部分事务隔离对于许多应用而言是足够的,并且这个模式速度快,使用简单。不过,对于做复杂查询和更新的应用,可能需要保证数据库有比读已提交模式更加严格的一致性视图。

  • SERIALIZABLE:事务可序列化级别,在该隔离级别中,事务只能看到在事务(而非查询)开始时提交的更改以及事务本身所做的更改。可序列化事务在一个孤立环境中运行,使其看起来好像没有其他用户在修改数据库中的数据。可序列化隔离级别适用于短事务(通常只更新几行) ;两个并发事务修改相同行的可能性相对较低 ;长时间运行的交易大多数是只读的。

    在可序列化隔离中,重复读的时候,事务读取的任何行都保证相同。任何查询都保证在事务持续时间内返回相同的结果,无论事务运行了多长时间,查询看不到其他事务所做的更改。可序列化事务不会遇到脏读、模糊读取或幻像读取。

  • CURRENT COMMITTED

    一个sql语句内读取到的数据,每一行都是读取时刻的最新已提交数据,所有读取出来的数据不再是一个快照数据。

GaussDB 100的事务控制提供了事务的启动、提交、两阶段提交准备、回滚、设置隔离级别操作,并支持在事务中创建保存点。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3147369/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19305