人大金仓以新兴技术加速数据管理智能化

人大金仓以新兴技术加速数据管理智能化_第1张图片

新兴技术:数据库自治事务

引言

在当今数字化时代,数据库技术不断演进,为企业提供了更高效的数据管理和处理手段。数据库自治事务作为一项新兴技术,引起了业界的广泛关注。目前,KingbaseES自治事务技术已经成功地应用于错误日志记录和数据库审计。

随着金仓数据库在各行各业中的广泛应用,自治事务的应用场景也在不断增加,在数据管理领域的重要性日益凸显,不断推动着数据管理向更智能、更高效的方向发展。

剖析KingbaseES自治事务核心

数据库自治事务指的是在当前事务(主事务)上开启的另一个完全独立的事务,执行自治事务程序时,主事务将挂起,退出自治事务,主事务会继续。因此,就时间线而言,主事务启动自治事务后会暂时挂起,等待自治事务执行完毕后才再次运行。类似的子事务也具有相同的时间序,但是自治事务和主事务有本质的区别

人大金仓以新兴技术加速数据管理智能化_第2张图片

相比之下,自治事务启动后,是完全独立的,它与主事务不共享锁、资源或提交依赖项。即使主事务回滚,也可以记录事件、增加重置计数器等,自治事务还能够构建模块化、可重复使用的软件组件

揭秘KingbaseES自治事务操作流程

自治事务的本质也是一个事务,所以自治事务可以commit和rollback。自治事务程序正常执行结束后,自治事务内执行的所有操作会被提交并持久化;如果自治事务抛出异常,那么主事务能够捕获其抛出异常,然后用户可能根据其异常进行相应处理。

PL/SQL对象有匿名块、函数和存储过程、包中函数和存储过程、嵌套子函数和存储过程以及触发器,自治事务可以在任意的PLSQL对象中使用。接下来将结合具体示例说明在不同PLSQL对象下如何使用自治事务。

人大金仓以新兴技术加速数据管理智能化_第3张图片

匿名块中使用自治事务

人大金仓以新兴技术加速数据管理智能化_第4张图片

子程序中使用自治事务

人大金仓以新兴技术加速数据管理智能化_第5张图片

包中使用自治事务

人大金仓以新兴技术加速数据管理智能化_第6张图片

触发器中使用自治事务

通过上述示例可以明确一点——普通用户程序仅需要在使用对象的声明区域加上声明语句PRAGMA AUTONOMOUS_TRANSACTION就可以使用自治事务需要注意的是匿名块中使用自治事务,该匿名块必须为顶层的匿名块;包本身不能直接使用自治事务,但是可以在包中的子程序中使用自治事务。

探寻数据库自治事务适用场景

因为自治事务能独立地被提交,而不影响主事务,所以自治事务可以用来做独立的数据处理。基于此,自治事务可以用于错误日志记录、数据库审计等场景。

如果主事务所在的程序抛出异常,而我们想要记录该异常信息,直接使用INSERT语句向日志表中插入此异常信息显然是行不通的,因为如果触发了事务回滚将导致该条日志信息被清理。所以在这种情况下使用自治事务就能达到独立记录错误日志信息的目的。下图给出了一个自治事务记录错误日志的示例。

人大金仓以新兴技术加速数据管理智能化_第7张图片

人大金仓以新兴技术加速数据管理智能化_第8张图片

如图表所示,主事务UPDATE操作执行完成后,再进行fetch into时未读到数据,此时name为空,进入异常处理块,然后调用程序write_err_log开启自治事务,挂起主事务,等待自治事务程序write_err_log将错误信息插入到日志表err_log中,结束自治事务,主事务继续,由于主事务已经出错并且事务并未提交,所以test表中的数据将被回滚。由此可见,自治事务很适合做独立的数据处理,特别是用于记录错误日志。

TIPS:自治事务不适用场景●●

由于自治事务与主事务锁不共享,所以自治事务与主事务访问同一行时,由于产生资源竞争,形成死锁而触发异常,因此自治事务不适合用于该场景。

无论是在金融、医疗行业,还是服务行业中知识产权管理、供应链等领域,数据库自治事务都将为数据管理带来新的可能性。人大金仓也将继续致力于数据库技术的突破和创新,“以用促研”,使得自治事务技术更灵活地应用于更多场景。021e093487236a2fbb50a9f77155154f.png供稿:产品研发中心

编辑:王堇

审核:日尧

你可能感兴趣的:(oracle,数据库)