暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 事务管理

MTL 2022-11-19
562

1、事务管理

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。openGauss数据库支持的事务控制命令有启动、设置、提交、回滚事务。openGauss数据库支持的事务隔离级别有READ COMMITTED、READ UNCOMMITTED、REPEATABLE READ和SERIALIZABLE,不推荐使用READ UNCOMMITTED,SERIALIZABLE等价于REPEATABLE READ。

事务控制

以下是数据库支持的事务命令:

  • 启动事务

    用户可以使用START TRANSACTION和BEGIN语法启动事务。

  • 设置事务

    用户可以使用SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务特性,详细操作请参考SET TRANSACTION。

  • 提交事务

    用户可以使用COMMIT或者END完成提交事务的功能,即提交事务的所有操作,详细操作请参考COMMIT | END。

  • 回滚事务

    回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,详细操作请参考ROLLBACK

事务隔离级别

事务隔离级别,它决定多个事务并发操作同一个对象时的处理方式。

说明:在事务中第一个数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,事务隔离级别就不能再次设置。

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

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

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

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

  • REPEATABLE READ:事务可重复读隔离级别,事务只能读到事务开始之前已提交的数据,不能读到未提交的数据以及事务执行期间其它并发事务提交的修改(但是,查询能查看到自身所在事务中先前更新的执行结果,即使先前更新尚未提交)。这个级别和读已提交是不一样的,因为可重复读事务中的查询看到的是事务开始时的快照,不是该事务内部当前查询开始时的快照,就是说,单个事务内部的select命令总是查看到同样的数据,查看不到自身事务开始之后其他并发事务修改后提交的数据。使用该级别的应用必须准备好重试事务,因为可能会发生串行化失败。


2、openGauss数据库事务

⚫ 事务的ACID 特性  原子性(Atomicity):

事务所包含的操作要么全部完成,要么什么也没做。 

 一致性(Consistency):在一致性数据库上执行事务后,数据库仍需保持为一致性的状态。

 隔离性(Isolation):没有结束的事务在提交之前不允许将其结果暴露给其它事务。 

 持久性(Durability):当一个事务的结果提交后,系统保证该结果不会因以后的故障而丢失。



3、penGauss数据库事务机制

1、事务的持久性(Durability)主要通过预写式 日志WAL算法实现。在事务提交时,采用预写式 日志方式,把REDO日志写到磁盘。 

2、检查点:将脏缓冲队列上的数据写出到数据 文件。



4、openGauss 支持的函数及存储过程

⚫ 函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。 openGauss支持SQL标准中的函数及存储过程,其中存储过程兼容了部分主流数据库存储过程的语法,增强 了存储过程的易用性。 

 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。

 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。 

 系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对 数据的访问,保证了数据的安全。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论