首页 > 数据库 > > GaussDB100 面向应用开发的功能--支持事务
GaussDB 100 V300R001C00初次引入。
GaussDB 100支持事务,数据处理具备完整性、一致性。
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/ ,如需转载,请注明出处,否则将追究法律责任。