[发明专利]数据库事务保持的方法、设备、系统、程序及存储介质有效
申请号: | 202110706679.6 | 申请日: | 2021-06-24 |
公开(公告)号: | CN113254425B | 公开(公告)日: | 2022-01-11 |
发明(设计)人: | 王宇辉;李飞飞;章颖强;王波 | 申请(专利权)人: | 阿里云计算有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F11/14;G06F9/46 |
代理公司: | 北京太合九思知识产权代理有限公司 11610 | 代理人: | 刘戈;张爱 |
地址: | 310012 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 事务 保持 方法 设备 系统 程序 存储 介质 | ||
本申请实施例提供一种数据库事务保持的方法、设备、系统、程序及存储介质。当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可发送回退节点之后的数据库语句,数据库服务器可在正确的状态下执行回退节点之后的数据库语句。进而,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持,降低了事务保持对客户端的依赖,同时,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持效率。
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库事务保持的方法、设备、系统、程序及存储介质。
背景技术
传统的数据库在发生异常情况下,例如数据库实例的主备切换或者重启时,数据库实例会断开与用户侧的连接,进而,用户侧的应用程序可以感知数据库的异常。为应对数据库异常导致的随时可能出现的“扰动”,应用程序需要有重建连接和重试事务的机制。但是,这种方式对用户侧的应用程序的依赖较高,不易提升数据库异常的处理效率。因此,有待提出一种新的解决方案。
发明内容
本申请的多个方面提供一种数据库事务保持的方法、设备、系统、程序及存储介质,用以在数据库发生异常时,在用户侧无感知的情况下实现事务保持。
本申请实施例提供一种数据库事务保持的方法,适用于数据库服务器,包括:在数据库实例结束异常状态后,确定未提交的事务的回退日志;响应代理服务器发送的事务恢复请求,重建目标事务;所述事务恢复请求包括:所述目标事务的标识以及所述目标事务的回退节点的标识;所述回退节点的标识包括所述目标事务中结束执行的数据库语句的标识;从所述未提交事务的回退日志中,确定所述目标事务的回退日志;根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;接收所述代理服务器重发的数据库语句,所述重发的数据库语句为所述回退节点的下一条数据库语句;执行所述重发的数据库语句,以保持执行所述目标事务。
本申请实施例还提供一种数据库事务保持的方法,适用于代理服务器,包括:在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求,以使得所述数据库服务器重建所述目标事务并将所述目标事务的数据回滚至所述回退节点对应的数据版本;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;向所述数据库服务器发送第二数据库语句,以使得所述数据库服务器根据所述第二数据库语句保持执行所述目标事务;所述第二数据库语句为所述回退节点的下一条数据库语句。
本申请实施例还提供一种服务器,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本申请实施例提供的数据库事务保持的方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本申请实施例提供的数据库事务保持的方法中的步骤。
本申请实施例还提供一种计算机程序,包括计算机程序/指令,其中,当计算机程序被处理器执行时,致使处理器实现本申请实施例提供的数据库事务保持的方法中的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里云计算有限公司,未经阿里云计算有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110706679.6/2.html,转载请声明来源钻瓜专利网。