数据处理方法、数据库管理系统和数据处理设备技术方案

技术编号:28320756 阅读:18 留言:0更新日期:2021-05-04 13:00
本申请实施例公开了一种数据处理的方法,用于存储过程执行失败重试。该方法包括:响应于存储过程请求,执行存储过程,所述存储过程包括一个或多个有序的事务,当所述一个或多个有序的事务中的第一事务执行结束时,记录所述第一事务的标记信息;基于执行所述存储过程中出现异常,且满足重试所述存储过程的条件,根据所述第一事务的标记信息重试所述存储过程中所述第一事务之后的事务。

【技术实现步骤摘要】
数据处理方法、数据库管理系统和数据处理设备
本申请涉及数据库
,特别涉及一种数据处理方法、数据库管理系统和数据处理设备。
技术介绍
存储过程(storedprocedure)是存储于数据库系统中的一组能够完成特定功能的语句集,存储过程经过第一次编译后再次调用不需要再次编译,用户可以通过指定存储过程的名字来运行存储过程。存储过程重试,是当存储过程执行失败时的重试机制,可以避免因硬件故障或软件故障导致用户业务发生中断。事务(transaction)是数据库系统中作为单个逻辑工作单元执行的操作序列,这些操作要么全部执行要么全不执行,是一个不可分割的工作单元。例如在关系型数据库中,一个事务可以是一条结构化查询语言(structuredquerylanguage,SQL)语句、一组SQL语句或整个程序。存储过程可能包含一个或多个事务。现有技术中,数据库驱动根据用户发送的工作请求,调用指定存储过程以响应用户的请求,当存储过程执行失败,且失败原因为可恢复性异常时,数据库驱动向数据库(database,DB)内核发送重试请求,获取正确的处理结果后响应给用户。由此可以屏蔽部分硬件、软件错误,提升用户体验。由于现有技术中,数据库驱动获取调用的存储过程执行是否成功,当存储过程执行失败时,重试只能将整个存储过程全部重新执行一遍。当存储过程存在事务提交指令时,存储过程整体重试将导致已经提交的部分操作被重复执行,从而导致数据出错。
技术实现思路
本申请实施例提供了一种数据处理方法,用于存储过程执行失败重试,可以避免存储过程中已执行事务的重复执行。本申请实施例第一方面提供了一种数据处理的方法,包括:响应于存储过程请求,执行存储过程,该存储过程包括一个或多个有序的事务,当该一个或多个有序的事务中的第一事务执行结束时,记录该第一事务的标记信息;基于执行该存储过程中出现异常,且满足重试该存储过程的条件,根据该第一事务的标记信息重试该存储过程中该第一事务之后的事务。存储过程可能包含一个或多个有序的事务,在存储过程执行期间,记录存储过程中已执行事务的标记信息,例如事务结束的位置。这样,当存储过程执行失败重试时,可以仅重试已执行事务之后的语句,已执行事务不需要重新执行,由此,提高了重试的执行效率,避免了重试时重复执行已提交事务带来的错误。在第一方面的一种可能的实现方式中,该方法还包括:记录调用该存储过程的请求语句。本申请实施例提供的数据处理方法,记录调用存储过程的请求语句,通过该请求语句以及第一事务的标记信息,可用于定位重试执行的位置。在第一方面的一种可能的实现方式中,该标记信息包括该第一事务的结束语句的行号。本申请实施例提供的数据处理方法,提供了记录第一事务的标记信息的一种具体实现方式,增强了方案的可操作性。在第一方面的一种可能的实现方式中,该方法还包括:记录该存储过程的中间状态信息,该中间状态信息包括以下一个或多个:该第一事务的执行语句结果、错误提示信息、输入参数、输出参数、全局变量和临时变量。本申请实施例提供的数据处理方法,数据库管理系统还可以记录第一事务的执行语句结果或错误提示信息、输入参数、输出参数、全局变量和临时变量,根据第一事务结束时的中间状态信息重试,可以满足数据的一致性。在第一方面的一种可能的实现方式中,该中间状态信息包括第一事务的执行语句结果或错误提示信息,该方法还包括:缓存该第一事务的执行语句结果或错误提示信息,直至该第一事务结束之后,再将该执行语句结果或错误提示信息发送给用户设备。本申请实施例提供的数据处理方法,记录第一事务的执行语句结果或错误提示信息,在第一事务结束之后再发送给用户设备,可以避免重试时,同样的执行语句结果或错误提示信息被重复发送给用户设备。在第一方面的一种可能的实现方式中,该中间状态信息包括第一事务的执行语句结果或错误提示信息,该方法还包括:缓存该第一事务的执行语句结果或错误提示信息,直至该存储过程结束之后,再将该执行语句结果或错误提示信息发送给用户设备。本申请实施例提供的数据处理方法,提供了向用户发送执行语句结果或错误提示信息的另一种方式,即在存储过程结束之后发送用户,这样,也可以避免重试时同样的执行语句结果或错误提示信息被重复发送给用户设备。在第一方面的一种可能的实现方式中,该第一事务位于该存储过程中的分支语句的一个分支,该方法还包括:记录该存储过程的中间状态信息,该中间状态信息包括分支执行状态,该分支执行状态用于标识该第一事务所在的分支;重试该存储过程中该第一事务之后的事务包括:基于该分支执行状态,执行该第一事务所在的分支中第一事务之后的事务。本申请实施例提供的数据处理方法,中间状态信息还可以包括分支执行状态,用于标识第一事务在分支语句中的分支,分支语句包括if分支语句或case分支语句。在重试时可以根据分支执行状态继续执行该分支,避免重试出错。在第一方面的一种可能的实现方式中,该分支执行状态包括执行该存储过程中该分支语句的条件判断结果,该条件判断结果用于确定执行所述分支语句中的目标分支。本申请实施例提供的数据处理方法,分支执行状态的一种具体记录内容为,分支语句的条件判断结果,增强了方案的可实现性。在第一方面的一种可能的实现方式中,该方法还包括:该重试该存储过程的条件为该存储过程异常为可恢复性异常,该可恢复性异常包括:网络异常、内存使用异常、输入输出异常、锁等待超时异常或两阶段事务提交异常。本申请实施例提供的数据处理方法,若异常为可恢复性异常,都可以执行重试。在第一方面的一种可能的实现方式中,该重试该存储过程中该第一事务之后的事务包括:等待预设的第一时长后,重试该存储过程中该第一事务之后的事务。本申请实施例提供的数据处理方法,对于例如主备切换等场景等待预设的时长后再重试,可以提高重试的成功率。在第一方面的一种可能的实现方式中,该方法还包括:当该一个或多个有序的事务中的第二事务执行结束时,记录该第二事务的标记信息,该第二事务为在该第一事务之后执行的事务;该重试该存储过程中该第一事务之后的事务包括:根据该第二事务的标记信息重试该存储过程中该第二事务之后的事务,该第二事务为满足重试该存储过程的条件时,已执行事务中最后被执行的事务。本申请实施例提供的数据处理方法,若存储过程包含多个事务,可以记录每个事务的标记信息,重试时,执行最后一个已执行的事务之后的事务即可,可以进一步减少资源浪费。本申请实施例第二方面提供了一种数据库管理系统,其特征在于,包括:执行单元,用于响应于存储过程请求,执行存储过程,该存储过程包括一个或多个有序的事务;记录单元,用于当该一个或多个有序的事务中的第一事务执行结束时,记录该第一事务的标记信息;重试单元,用于基于执行该存储过程中出现异常,且满足重试该存储过程的条件,根据该第一事务的标记信息重试该存储过程中该第一事务之后的事务。在第二方面的一种可能的实现方式中,该记录单元还用于:记录调用该存储过程的请本文档来自技高网...

【技术保护点】
1.一种数据处理的方法,其特征在于,包括:/n响应于存储过程请求,执行存储过程,所述存储过程包括一个或多个有序的事务;/n当所述一个或多个有序的事务中的第一事务执行结束时,记录所述第一事务的标记信息;/n基于执行所述存储过程中出现异常,且满足重试所述存储过程的条件,根据所述第一事务的标记信息重试所述存储过程中所述第一事务之后的事务。/n

【技术特征摘要】
1.一种数据处理的方法,其特征在于,包括:
响应于存储过程请求,执行存储过程,所述存储过程包括一个或多个有序的事务;
当所述一个或多个有序的事务中的第一事务执行结束时,记录所述第一事务的标记信息;
基于执行所述存储过程中出现异常,且满足重试所述存储过程的条件,根据所述第一事务的标记信息重试所述存储过程中所述第一事务之后的事务。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
记录调用所述存储过程的请求语句。


3.根据权利要求1或2所述的方法,其特征在于,所述标记信息包括所述第一事务的结束语句的行号。


4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
记录所述存储过程的中间状态信息,所述中间状态信息包括以下一个或多个:所述第一事务的执行语句结果、错误提示信息、输入参数、输出参数、全局变量和临时变量。


5.根据权利要求4所述的方法,其特征在于,所述中间状态信息包括第一事务的执行语句结果或错误提示信息,所述方法还包括:
缓存所述第一事务的执行语句结果或错误提示信息,直至所述第一事务结束之后,再将所述执行语句结果或错误提示信息发送给用户设备。


6.根据权利要求4所述的方法,其特征在于,所述中间状态信息包括第一事务的执行语句结果或错误提示信息,所述方法还包括:
缓存所述第一事务的执行语句结果或错误提示信息,直至所述存储过程结束之后,再将所述执行语句结果或错误提示信息发送给用户设备。


7.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一事务位于所述存储过程中的分支语句的一个分支,所述方法还包括:
记录所述存储过程的中间状态信息,所述中间状态信息包括分支执行状态,所述分支执行状态用于标识所述第一事务所在的分支;
重试所述存储过程中所述第一事务之后的事务包括:基于所述分支执行状态,执行所述第一事务所在的分支中第一事务之后的事务。


8.根据权利要求7所述的方法,其特征在于,
所述分支执行状态包括执行所述存储过程中所述分支语句的条件判断结果。


9.根据权利要求1至8中任一项所述的方法,其特征在于,所述重试所述存储过程的条件为所述存储过程异常为可恢复性异常,所述可恢复性异常包括:网络异常、内存使用异常、输入输出异常、锁等待超时异常或两阶段事务提交异常。


10.根据权利要求1至9中任一项所述的方法,其特征在于,所述重试所述存储过程中所述第一事务之后的事务包括:
等待预设的第一时长后,重试所述存储过程中所述第一事务之后的事务。


11.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
当所述一个或多个有序的事务中的第二事务执行结束时,记录所述第二事务的标记信息,所述第二事务为在所述第一事务之后执行的事务;
所述重试所述存储过程中所述第一事务之后的事务包括:
根据所述第二事务的标记信息重试所述存储过程中所述第二事务之后的事务,所述第二事务为满足重试所述存储过程的条件时,已执行事务中最后被执行的事务。


12.一种数据库管理系统,其特征在于,包括:
执行单元,用于响应于存储过程请求,执行存储过程,所述存储过程包括一个或多个有序的事务;
记录单元,用于当所述一个或多个有序的事务中的第一事务执行结束时,记录所述第一事务的标记信息;
重试单元,用于基于执行所述存储过程中出现异常,且满足重试所述存储过程的条件,根据所述第一事务的标记信息重试所述存储过程中所述第一事务之后的事务。


13.根据权利要求12所述的数据库管理系统,其特征在于,...

【专利技术属性】
技术研发人员:于巍李国良张金玉董亚辉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1