人大金仓数据库KingbaseES 中的自治事务、子事务和长事务

本文介绍了KingbaseES数据库中事务的默认行为,包括自动开启和手动控制。自治事务和子事务的概念被详细阐述,以及如何通过PRAGMAAUTONOMOUS_TRANSACTION实现自治事务。长事务则针对执行时间较长、涉及复杂业务逻辑的情况,讨论了其对系统性能的影响和识别方法。
摘要由CSDN通过智能技术生成

关键字:

KingbaseES、自治事务、长事务、子事务、人大金仓

  1. 事务
  • 事务在数据库中是最小的操作执行单位,一个事务提交后,要么全部执行(commit),要么全部都不执行(rollback);
  • KingbaseES数据库中,事务是默认自动开启的,即在执行单条sql语句时,会进入一个默认的事务环境中,sql语句执行成功后,事务也就完成;
  • KingbaseES也可以手动开启和关闭事务,可以使用begin;命令或start transaction命令开启事务,使用end;或rollback命令关闭事务。
  • 2. 自治事务
  • 自治事务的定义

自治事务,顾名思义,自己管理自己的事务,它能够独立于其父事务提交或回滚。利用自治事务,可以挂起当前执行的事务,开启一个新事务,完成一些工作,然后提交或回滚,所有这些操作都不影响当前执行事务的状态。

只要开始执行,一个自治事务就完全独立于调用它的主事务。它看不到主事务的任何未提交的改变、不和主事务共享任何锁和资源。自治事务产生的改变在自身的提交之后就可以让其他事务看到。

  • 自治事务的实现

语法:

只需要在PL/SQL的声明部分加上PRAGMA AUTONOMOUS_TRANSACTION即可:

如图所示,在程序块中声明自治事务后,程序块中的commit和rollback操作并不会影响到主事务,只会影响到该程序块中本身的事务;并且程序块中的子事务之间相互也不会有任何影响。

3. 子事务

  • 子事务的概念

在KingbaseES中,事务是默认工作在自动提交模式下,这种模式只支持单语句的执行,在多语句的情况下,就需要显示的调用begin或者start transaction来开启一个事务,进行手动提交,最后使用end或者rollback命令来结束该事务。

在普通事务下,如果在执行多语句操作,某一步骤的sql语句出现了错误,那么只能使用rollback整个事务,然后从头开始整个事务;而子事务的出现可以解决这种问题,子事务允许用户回滚部分想要回滚的事务,也就是将一个完整的事务分割为多个子事务,当操作过程中出错或者不想执行某操作时,对事务中的子事务进行回滚操作即可,不需要对整个事务都进行回滚。

  • 子事务的实现

在子事务中,不能直接对子事务进行提交,子事务也是通过事务的提交而提交,通过savepoint p1 在事务中打上保存点标记,将事务分割为多个子事务。

子事务在SQL语句中的使用:

SAVEPOINT savepoint_name

ROLLBACK [ WORK | TRANSACTION] TO [ SAVEPOINT ] savepoint_name

RELEASE [ SAVEPOINT ] savepoint_name

注意:

  • Savepoints语句必须在事务块中;
  • Savepoint执行保存点;rollback回滚到指定的保存点;release擦除保存点,不会回滚子事务数据;
  • Cursor不会被savepoint事务影响

子事务示例:

4. 长事务

长事务是相对于短事务而言的,短事务一般执行的时间较短,但是在实际应用中,有些事务可能涉及到大量的数据和复杂的业务逻辑,执行的时间较长,这就是长事务。

短事务执行时间短,对数据库系统的性能影响较小,而长事务可能导致数据库锁定资源时间过长,从而影响系统的并发性能和响应速度。

长事务的定义依据是事务的执行时间超过一定的阈值,一般情况下可以根据数据库操作的复杂性和执行时间的长短来确定,比如,可以将超过5秒钟的事务定义为长事务。

构造大量数据,如:

对表test_001插入500W条数据,大量的数据插入会使得该事务的执行时间较长,因此,该事务可以被称为长事务;

除此之外,还可以手动构建长事务,比如,开启事务后,长时间内不对事务做commit或者rollback操作,会导致事务一直处于活跃状态中,这也能被称为长事务:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值