一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

批量处理和联机交易的冲突避免方法及装置与流程

2023-02-04 09:21:01 来源:中国专利 TAG:


1.本技术涉及智能运维领域和大数据技术领域,特别是涉及一种批量处理和联机交易的冲突避免方法及装置。


背景技术:

2.日终批量作为核心业务系统的内核,通过批量程序在系统日切后调度数据库的相关程序完成具体的业务操作。银行账务处理、会计报表、参数加载等一般通过日终批量方式完成,一方面可以充分利用应用系统交易低峰进行数据库账务处理,合理调配资源;另一方面银行账务量和报表量较大,通过日终批量按照固定排程、集中调度运行,可以最大程度缩短处理时间。
3.但日终批量依赖的上游文件下传时间无法确定,一旦上游遇到数据、网络等问题导致上游文件下传延迟,或运行时间过长,日终批量可能就要与高峰期联机交易并行。另外高峰时段随着业务不断迭代和推广存在变化,仅靠一般性运行判断和低峰期调起批量,无法避免异常情况下的日终批量与联机交易的冲突风险。
4.可见,目前日终批量在测试验证和生产运行过程中,存在与联机交易的高峰期的冲突风险。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种批量处理和联机交易的冲突避免方法及装置,以避免日终批量与联机交易的冲突风险。
6.第一方面,本技术提供了一种批量处理和联机交易的冲突避免方法,所述方法包括:
7.确定日终批量对应的存储过程或存储函数;
8.根据所述存储过程或所述存储函数对应的操作,从所述存储过程或所述存储函数中确定目标存储过程或目标存储函数;
9.确定所述目标存储过程或所述目标存储函数对应的多个第一数据库表;
10.针对任一所述第一数据库表,对所述第一数据库表进行高峰时段检测,得到高峰时段检测结果;
11.在所述高峰时段检测结果表征所述第一数据库表处于高峰时段的情况下,对所述第一数据库表对应的所述目标存储过程或所述目标存储函数进行查杀处理。
12.在其中一个实施例中,所述确定日终批量对应的存储过程或存储函数,包括:
13.获取批量运行表或批量程序文件;
14.扫描所述批量运行表或所述批量程序文件,得到所述日终批量对应的存储过程或存储函数。
15.在其中一个实施例中,所述根据所述存储过程或所述存储函数对应的操作,从所述存储过程或所述存储函数中确定目标存储过程或目标存储函数,包括:
16.从数据库的数据字典中获取所述存储过程或所述存储函数的定义语句;
17.对所述定义语句进行操作关键字匹配,得到匹配结果;
18.根据所述匹配结果,确定目标存储过程或目标存储函数。
19.在其中一个实施例中,所述操作关键字包括更新关键字和删除关键字,所述对所述定义语句进行操作关键字匹配,得到匹配结果,包括:
20.对所述定义语句进行所述更新关键字和所述删除关键字匹配;
21.在所述定义语句中存在所述更新关键字或所述删除关键字的情况下,得到第一匹配结果;或者,在所述定义语句中不存在所述更新关键字或所述删除关键字的情况下,得到第二匹配结果。
22.在其中一个实施例中,所述根据所述匹配结果,确定目标存储过程或目标存储函数,包括:
23.在所述匹配结果为所述第一匹配结果的情况下,将所述定义语句对应的所述存储过程或所述存储函数作为目标存储过程或目标存储函数。
24.在其中一个实施例中,所述对所述第一数据库表进行高峰时段检测,得到高峰时段检测结果,包括:
25.确定预设时段,所述预设时段的终止时间为当前时刻,所述预设时段的时长为预设时长;
26.获取所述第一数据库表在所述预设时段的查询类操作次数、更新类操作次数以及删除类操作次数;
27.在所述查询类操作次数超过第一预设阈值,或者所述更新类操作次数与所述删除类操作次数之和超过第二预设阈值的情况下,得到表征所述预设时段为高峰时段的检测结果。
28.在其中一个实施例中,所述对所述第一数据库表对应的所述目标存储过程或所述目标存储函数进行查杀处理,包括:
29.下线所述第一数据库表对应的所述目标存储过程或所述目标存储函数;
30.在预设的缓冲时间后对所述第一数据库表再次进行高峰时段检测,得到缓冲结果;
31.在所述缓冲结果表征所述第一数据库表仍处于高峰时段的情况下,对所述第一数据库表对应的所述目标存储过程或所述目标存储函数进行查杀处理;
32.或者,在所述缓冲结果表征所述第一数据库表未处于高峰时段的情况下,重新上线所述第一数据库表对应的所述目标存储过程或所述目标存储函数。
33.第二方面,本技术还提供了一种批量处理和联机交易的冲突避免装置,所述装置包括:
34.函数获取模块,用于确定日终批量对应的存储过程或存储函数;
35.目标函数获取模块,用于根据所述存储过程或所述存储函数对应的操作,从所述存储过程或所述存储函数中确定目标存储过程或目标存储函数;
36.数据库表获取模块,用于确定所述目标存储过程或所述目标存储函数对应的多个第一数据库表;
37.检测模块,用于针对任一所述第一数据库表,对所述第一数据库表进行高峰时段
检测,得到高峰时段检测结果;
38.查杀模块,用于在所述高峰时段检测结果表征所述第一数据库表处于高峰时段的情况下,对所述第一数据库表对应的所述目标存储过程或所述目标存储函数进行查杀处理。
39.在其中一个实施例中,所述函数获取模块,还用于获取批量运行表或批量程序文件;扫描所述批量运行表或所述批量程序文件,得到所述日终批量对应的存储过程或存储函数。
40.在其中一个实施例中,所述目标函数获取模块,还用于从数据库的数据字典中获取所述存储过程或所述存储函数的定义语句;对所述定义语句进行操作关键字匹配,得到匹配结果;根据所述匹配结果,确定目标存储过程或目标存储函数。
41.在其中一个实施例中,所述操作关键字包括更新关键字和删除关键字,所述目标函数获取模块,还用于对所述定义语句进行所述更新关键字和所述删除关键字匹配;在所述定义语句中存在所述更新关键字或所述删除关键字的情况下,得到第一匹配结果;或者,在所述定义语句中不存在所述更新关键字或所述删除关键字的情况下,得到第二匹配结果。
42.在其中一个实施例中,所述目标函数获取模块,还用于在所述匹配结果为所述第一匹配结果的情况下,将所述定义语句对应的所述存储过程或所述存储函数作为目标存储过程或目标存储函数。
43.在其中一个实施例中,所述检测模块,还用于确定预设时段,所述预设时段的终止时间为当前时刻,所述预设时段的时长为预设时长;获取所述第一数据库表在所述预设时段的查询类操作次数、更新类操作次数以及删除类操作次数;在所述查询类操作次数超过第一预设阈值,或者所述更新类操作次数与所述删除类操作次数之和超过第二预设阈值的情况下,得到表征所述预设时段为高峰时段的检测结果。
44.在其中一个实施例中,所述查杀模块,还用于下线所述第一数据库表对应的所述目标存储过程或所述目标存储函数;在预设的缓冲时间后对所述第一数据库表再次进行高峰时段检测,得到缓冲结果;在所述缓冲结果表征所述第一数据库表仍处于高峰时段的情况下,对所述第一数据库表对应的所述目标存储过程或所述目标存储函数进行查杀处理;或者,在所述缓冲结果表征所述第一数据库表未处于高峰时段的情况下,重新上线所述第一数据库表对应的所述目标存储过程或所述目标存储函数。
45.第三方面,本技术还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述各方法实施例中的步骤。
46.第四方面,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述各方法实施例中的步骤。
47.第五方面,本技术还提供了一种计算机程序产品,所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
48.上述批量处理和联机交易的冲突避免方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,确定日终批量对应的存储过程或存储函数;根据所述存储过程或所
述存储函数对应的操作,从所述存储过程或所述存储函数中确定目标存储过程或目标存储函数;确定所述目标存储过程或所述目标存储函数对应的多个第一数据库表;针对任一所述第一数据库表,对所述第一数据库表进行高峰时段检测,得到高峰时段检测结果;在所述高峰时段检测结果表征所述第一数据库表处于高峰时段的情况下,对所述第一数据库表对应的目标存储过程或所述目标存储函数进行查杀处理。本技术提出的批量处理和联机交易的冲突避免方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,先确定日终批量对应的存储过程或存储函数,并从中确定具有高危操作的目标存储过程或目标存储函数,对目标存储过程或目标存储函数涉及的第一数据库表进行高峰时段检测,以对影响高峰联机交易,且在高峰时段运行的目标存储过程或函数进行自动查杀,避免日终批量和联机交易间存在的冲突风险。
附图说明
49.图1为一个实施例中批量处理和联机交易的冲突避免方法的流程示意图。
50.图2为一个实施例中步骤102的流程示意图。
51.图3为一个实施例中步骤104的流程示意图。
52.图4为一个实施例中步骤304的流程示意图。
53.图5为一个实施例中步骤108的流程示意图。
54.图6为一个实施例中步骤110的流程示意图。
55.图7为一个实施例中批量处理和联机交易的冲突避免系统的示意图。
56.图8为一个实施例中批量处理和联机交易的冲突避免装置的结构框图。
57.图9为一个实施例中计算机设备的内部结构图。
具体实施方式
58.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
59.日终批量在测试验证和生产运行过程中,存在如下实际问题:
60.1、处理日终批量时,涉及处理上游下传的文件或者导出数据文件给下游。虽然各应用日终批量预设了总体的调起时间和排程顺序,但各种触发条件仍然会诱发各批量分支运行时间的不确定性。日终批量依赖的上游文件下传时间无法确定,一旦上游遇到数据、网络等问题导致上游文件下传延迟,或运行时间过长,可能就要与高峰期联机交易并行。另外高峰时段随着业务不断迭代和推广存在变化,因此仅靠一般性运行判断和低峰期调起批量,都无法避免异常情况下的随机性风险。
61.2、日终批量根据不同业务逻辑,可能包括查询、插入、更新、删除、导出等各类操作,联机交易受不同操作的影响程度不同。当日终批量涉及更新和删除操作时,会带来表锁、行锁或者资源占用,从而在高峰期会对联机交易造成死锁或读写资源争用的风险。
62.3、基于oracle数据库(甲骨文公司提供的一种数据库)的日终批量通过中间件调用oracle存储过程或函数,存储过程或函数当中还会继续调用子procedure(存储过程)或子package(包),而且批量涉及大量工作流和分支,如果模拟异常并行情况进行测试,需要
模拟高并发联机交易和几百个日终批量同时运行,且系统需要进行日切,而且必须确保联机交易类型与批量具备相关性。因此目前难以完整评估联机交易高峰期与日终批量间的冲突影响。
63.基于此,本技术实施例提供了一种批量处理和联机交易的冲突避免方法,通过提出日终批量对oracle数据库操作的分析识别方法,结合联机交易场景对数据库依赖通过静态方式判断影响,识别异常场景下可能存在的风险,以解决上述问题,避免日终批量与联机交易的冲突风险。
64.在一个实施例中,如图1所示,提供了一种批量处理和联机交易的冲突避免方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
65.步骤102,确定日终批量对应的存储过程或存储函数。
66.本技术实施例中,日终批量为一种批量处理的程序,用于在系统日切后调度数据库的相关程序完成具体的业务操作。可以从数据库中获取日终批量对存储过程或存储函数的调用关系,从而获得日终批量对应的存储过程或存储函数。数据库可以为oracle数据库。
67.步骤104,根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数。
68.本技术实施例中,目标存储过程或目标存储函数为涉及高危操作的存储过程或存储函数。对日终批量操作的数据库表进行更新或删除操作即为高危操作。当日终批量涉及更新或删除操作时,会带来表锁、行锁或者资源占用,从而在高峰期会对联机交易造成死锁或读写资源争用的风险。可以通过查询存储过程或存储函数对应的操作,将涉及高危操作的存储过程或存储函数作为目标存储过程或目标存储函数。
69.步骤106,确定目标存储过程或目标存储函数对应的多个第一数据库表。
70.本技术实施例中,第一数据库表为日终批量高危操作(例如更新或删除)的具体数据库表,为一种负责记录数据的静态结构,可以通过存储过程或存储函数操作。针对任一目标存储过程或目标存储函数,可以对应一个或多个第一数据库表。具体地,可以从数据库的数据字典中获取目标存储过程或目标存储函数对应的text(存储过程或函数代码定义),并记录text中更新或删除操作的多个第一数据库表。
71.步骤108,针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果。
72.其中,可以根据每日联机交易运行情况对各个第一数据库表的访问量进行统计,以进行高峰时段检测。得到的高峰时段检测结果用于表征第一数据库表在当前时刻是否处于高峰时段。
73.步骤110,在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。
74.其中,若高峰时段检测结果表征第一数据库表处于高峰时段,则此时对该第一数据库表进行高危操作的目的存储过程或目的存储函数,可能会影响联机交易,对联机交易造成死锁或读写资源争用的风险。因此,需要对该第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。例如:可以每30s自动探测一次,对符合上述条件的目标存储过
程或目标存储函数进行查杀。可以调用oracle数据库的alter system方法,通过$access和$session视图锁定当前批量运行的数据库进程,准确查杀,具体过程如下:
75.1)找到目的存储过程或目的函数进程的sid和serial。sid为system process id(操作系统进程标识),用来标识session(会话)。serial是用来标识session的序列号,oracle数据库通过serial来识别具体有相同sid的不同session。
76.select b.sid,b.serial#
77.from sys.v_$access a,sys.v_$session b
78.where a.type='procedure'
79.and(a.object like upper('%存储过程名%')or a.object like lower('%存储过程名%'))
80.and a.sid=b.sid
81.and b.status='active';。
82.2)查杀正在执行的目的存储过程或目的存储函数。对通过sid和serial共同确定的session内存进行销毁,该进程被强制结束。
83.alter system kill session'sid,serial#';。
84.本技术实施例提供的批量处理和联机交易的冲突避免方法,确定日终批量对应的存储过程或存储函数;根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数;确定目标存储过程或目标存储函数对应的多个第一数据库表;针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果;在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。本技术提出的批量处理和联机交易的冲突避免方法,先确定日终批量对应的存储过程或存储函数,并从中确定具有高危操作的目标存储过程或目标存储函数,对目标存储过程或目标存储函数涉及的第一数据库表进行高峰时段检测,以对影响高峰联机交易,且在高峰时段运行的目标存储过程或函数进行自动查杀,避免日终批量和联机交易间存在的冲突风险。
85.在一个实施例中,如图2所示,步骤102中,确定日终批量对应的存储过程或存储函数,可以包括:
86.步骤202,获取批量运行表或批量程序文件。
87.其中,日终批量对存储函数或存储过程的调用主要为两种。一种在批量运行表中指定日终批量与存储过程或存储函数的调用关系,二是通过批量程序文件指定具体的存储过程或存储函数。批量运行表也为日终批量调度表,是通过应用的数据库程序脚本定义和维护,可以通过查询oracle数据库表得到。批量程序文件是实现日终批量的程序实体,部署在批量服务器上,可以通过读取或者下载服务器文件的方式获取。
88.步骤204,扫描批量运行表或批量程序文件,得到日终批量对应的存储过程或存储函数。
89.其中,可以扫描批量运行表得到日终批量与存储过程或存储函数的调用关系,再根据调用关系得到日终批量对应的存储过程或存储函数。或者,直接扫描批量程序文件得到日终批量对应的存储过程或存储函数。例如:日终批量batch_1对应存储过程pckg_analyze。
90.本公开实施例,基于批量运行表或批量程序文件两种不同方式获取日终批量对应的存储过程或存储函数,避免遗漏存储过程或存储函数,以提高识别日终批量和联机交易间的冲突风险的准确性,以及提升系统的稳定性。
91.在一个实施例中,如图3所示,步骤104中,根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数,可以包括:
92.步骤302,从数据库的数据字典中获取存储过程或存储函数的定义语句。
93.其中,oracle数据库包括原生的user_source数据字典,数据字典的具体结构如表1所示。type是oracle的默认对象类型名称,包括:procedure存储过程、package包、package body包体、type body类型体以及function函数。可以直接从数据字典中查询各个存储过程或存储函数对应的text,也即定义语句。
94.表1
[0095][0096]
步骤304,对定义语句进行操作关键字匹配,得到匹配结果。
[0097]
其中,操作关键字为存储过程或存储函数对数据库表进行的操作的关键字,例如查询、插入、更新、删除、导出等。匹配的方法可以为模糊匹配。匹配结果可以用来表征定义语句中是否存在操作关键字。
[0098]
步骤306,根据匹配结果,确定目标存储过程或目标存储函数。
[0099]
其中,若匹配结果表征定义语句中不存在操作关键字,则该定义语句并不涉及高危操作。若一个存储过程或存储函数对应的定义语句的匹配结果表征不存在操作关键字,则该存储过程或存储函数不存在高危操作,不作为目标存储过程或目标存储函数。反之,若一个存储过程或存储函数对应的定义语句的匹配结果表征定义语句中存在操作关键字,则该存储过程或存储函数存在高危操作,将该存储过程或存储函数作为目标存储过程或目标存储函数。
[0100]
本公开实施例,基于存储过程或存储函数的定义语句的匹配结果,确定涉及高危操作的目标存储过程或目标存储函数,以便于在后续步骤中自动查杀高峰时段的目标存储过程或目标存储函数,避免日终批量和联机交易间的冲突风险。
[0101]
在一个实施例中,操作关键字包括更新关键字和删除关键字,如图4所示,步骤304中,对定义语句进行操作关键字匹配,得到匹配结果,可以包括:
[0102]
步骤402,对定义语句进行更新关键字和删除关键字匹配。
[0103]
其中,可以通过查询定义语句中是否存在delete(删除)或update(更新)的大写或小写关键字,以得到匹配结果。具体方法如下:
[0104]
select*from user_source
[0105]
where
[0106]
name='存储过程或函数名称'
[0107]
and type in('package body','function')
[0108]
and(lower(text)like'%delete%'or lower(text)like'%update%');
[0109]
步骤404,在定义语句中存在更新关键字或删除关键字的情况下,得到第一匹配结果;或者,在定义语句中不存在更新关键字或删除关键字的情况下,得到第二匹配结果。
[0110]
其中,若在定义语句中查询到delete或update的大写或小写关键字,则得到表征定义语句中存在更新关键字或删除关键字的第一匹配结果。若在定义语句中没有查询到delete或update的大写或小写关键字,则得到表征定义语句中不存在更新关键字或删除关键字的第二匹配结果。
[0111]
本公开实施例,基于对定义语句进行更新关键字或删除关键字匹配,得到第一匹配结果或第二匹配结果,以便于在后续步骤中根据不同的匹配结果确定目标存储过程或目标存储函数。
[0112]
在一个实施例中,步骤306中,根据匹配结果,确定目标存储过程或目标存储函数,可以包括:
[0113]
在匹配结果为第一匹配结果的情况下,将定义语句对应的存储过程或存储函数作为目标存储过程或目标存储函数。
[0114]
其中,若在匹配结果为第一匹配结果,则定义语句中包含更新或删除等高危操作,也即定义语句对应的存储过程或存储函数存在高危操作,将该存储过程或存储函数作为目标存储过程或目标存储函数。记录该定义语句中更新或删除操作的数据库表作为目标存储过程或目标存储函数对应的第一数据库表。
[0115]
本公开实施例基于第一匹配结果从存储过程或存储函数中确定目标存储过程或目标存储函数,以便于在后续步骤中自动查杀高峰时段的目标存储过程或目标存储函数,避免日终批量和联机交易间的冲突风险。
[0116]
在一个实施例中,如图5所示,在步骤108中,对第一数据库表进行高峰时段检测,得到高峰时段检测结果,可以包括:
[0117]
步骤502,确定预设时段,预设时段的终止时间为当前时刻,预设时段的时长为预设时长。
[0118]
其中,预设时长可以由管理人员通过经验等预先设定。示例性的,预设时长可以为半小时。预设时段即为从当前时刻至过去的半小时的时段。
[0119]
步骤504,获取第一数据库表在预设时段的查询类操作次数、更新类操作次数以及删除类操作次数。
[0120]
其中,可以实时根据每日联机交易运行情况统计第一数据库表在预设时段的访问量,即可获得第一数据库表在预设时段的查询类操作次数、更新类操作次数以及删除类操作次数。
[0121]
步骤506,在查询类操作次数超过第一预设阈值,或者更新类操作次数与删除类操
作次数之和超过第二预设阈值的情况下,得到表征预设时段为高峰时段的检测结果。
[0122]
其中,第一预设阈值和第二预设阈值可以由管理人员通过经验等预先设定。示例性的,第一预设阈值可以为1800,第二预设阈值可以为180。若从当前时刻往前半个小时内,查询类操作超过1800次(平均每1s1次),则第一数据库表的该预设时段登记为高峰时段,得到表征预设时段为高峰时段的检测结果。或者,从当前时刻往前半个小时内,更新类操作次数与删除类操作次数之和超过180次(平均每10s1次),则第一数据库表的该预设时段登记为高峰时段,得到表征预设时段为高峰时段的检测结果。例如:如果某表a对应的联机交易属于查询类,且在6:00至6:30发生了1800笔以上,则6:00至6:30为表a的高峰时段。如果某表b对应的联机交易属于更新类,且在7:00至7:30发生了180笔以上,则7:00至7:30为表b的高峰时段。
[0123]
本公开实施例,基于统计第一数据库表在预设时段的查询类、更新类和删除类操作次数,来判断当前时刻第一数据库表是否处于高峰时段,以便于在后续步骤中自动查杀高峰时段的目标存储过程或目标存储函数,避免日终批量和联机交易间的冲突风险。
[0124]
在一个实施例中,如图6所示,在步骤110中,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理,可以包括:
[0125]
步骤602,下线第一数据库表对应的目标存储过程或目标存储函数。
[0126]
其中,在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,可以先将第一数据库表对应的目标存储过程或目标存储函数作下线(offline)处理,此时,下线的目标存储过程或目标存储函数将不会被调用。
[0127]
步骤604,在预设的缓冲时间后对第一数据库表再次进行高峰时段检测,得到缓冲结果。
[0128]
其中,缓冲时间可以根据实际应用中的具体情况预先设定。一般缓冲时间不超过2s。在缓冲时间内处于高峰时段的第一数据库表对应的目标存储过程或目标存储函数一直处于下线状态。在缓冲时间结束的时刻可以再次对该第一数据库表进行高峰时段检测,得到用于表征缓冲时间后的第一数据库表是否仍处于高峰时段的缓冲结果。
[0129]
步骤606,在缓冲结果表征第一数据库表仍处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。
[0130]
其中,若缓冲结果表征第一数据库表仍处于高峰时段,则将处于下线状态的目标存储过程或目标存储函数进行查杀处理。
[0131]
步骤608,或者,在缓冲结果表征第一数据库表未处于高峰时段的情况下,重新上线第一数据库表对应的目标存储过程或目标存储函数。
[0132]
其中,若缓冲结果表征第一数据库表不再处于高峰时段,则将处于下线状态的目标存储过程或目标存储函数重新上线,使其可以被调用。
[0133]
本公开实施例,基于预设的缓冲时间可以将处于高峰时段的第一数据库表对应的目标存储过程或目标存储函数暂时挂起,以使若出现缓冲时间后第一数据库表不再处于高峰时段时,可以继续目标存储过程或目标存储函数的处理进程,提高日终批量的处理效率。在一个实施例中,在数据库出现批量存储过程或函数自动查杀后,还可以将查杀的目标存储过程或函数名称以及对应的日终批量名称,发送给生产运维和开发人员,评估日终批量是否需要补操作,以及后续日终批量效率的调优和日终批量架构优化。
[0134]
为了便于本技术实施例的进一步理解,参见图7,本技术在此提供一种批量处理和联机交易的冲突避免系统,批量处理和联机交易的冲突避免系统包括批量程序与存储过程或函数关系扫描模块、oracle存储过程或函数dml(数据操纵语言,data manipulation language)操作识别模块、联机表交易高峰阈值统计模块、峰时段批量冲突自动查杀模块以及监控报警模块。批量程序与存储过程或函数关系扫描模块用于识别日终批量对oracle数据库存储过程或函数的调用关系。oracle存储过程或函数dml操作识别模块用于对批量程序与存储过程或函数关系扫描模块中获得的存储过程或函数程序清单,进行涉及dml操作内容的识别和影响分析,以得到涉及高风险操作的存储过程或函数以及数据库的表。联机交易高峰阈值统计模块用于根据每日联机交易运行情况对数据库各个表的访问量按半小时维度进行统计,以得到每个表的高峰时段。高峰时段批量冲突自动查杀模块用于根据oracle存储过程或函数dml操作识别模块、联机表交易高峰阈值统计模块得出的结果,对影响高峰期联机交易,且在该交易高峰时段运行的存储过程或函数进行自动查杀,该模块每30s自动探测一次,如果命中待查杀进程,则自动查杀。监控报警模块用于当数据库出现批量存储过程或函数自动查杀后,将查杀的存储过程或函数名以及对应的批量名称,通过此模块发送给生产运维和开发人员,评估批量是否需要补操作,以及后续批量效率的调优和批量架构优化。
[0135]
本技术实施例提出的批量处理和联机交易的冲突避免方法,借助oracle原生数据字典以及构思的并行冲突检测方法,可以智能识别银行系统日终批量和联机交易间存在的冲突风险,同时提供精准查杀的技术保障,避免由于设计考虑不合理、改造测试不充分以及业务运行频繁波动不可识别带来的影响和风险,提高异常场景测试效率,以及提升银行系统的健壮性。
[0136]
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0137]
基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的批量处理和联机交易的冲突避免装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个批量处理和联机交易的冲突避免装置实施例中的具体限定可以参见上文中对于批量处理和联机交易的冲突避免方法的限定,在此不再赘述。
[0138]
在一个实施例中,参见图8,提供了一种批量处理和联机交易的冲突避免装置800。批量处理和联机交易的冲突避免装置800包括:
[0139]
函数获取模块802,用于确定日终批量对应的存储过程或存储函数。
[0140]
目标函数获取模块804,用于根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数。
[0141]
数据库表获取模块806,用于确定目标存储过程或目标存储函数对应的多个第一
数据库表。
[0142]
检测模块808,用于针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果。
[0143]
查杀模块810,用于在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。
[0144]
上述批量处理和联机交易的冲突避免装置,确定日终批量对应的存储过程或存储函数;根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数;确定目标存储过程或目标存储函数对应的多个第一数据库表;针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果;在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。本技术提出的批量处理和联机交易的冲突避免装置,先确定日终批量对应的存储过程或存储函数,并从中确定具有高危操作的目标存储过程或目标存储函数,对目标存储过程或目标存储函数涉及的第一数据库表进行高峰时段检测,以对影响高峰联机交易,且在高峰时段运行的目标存储过程或函数进行自动查杀,避免日终批量和联机交易间存在的冲突风险。
[0145]
在一个实施例中,函数获取模块802还用于获取批量运行表或批量程序文件;扫描批量运行表或批量程序文件,得到日终批量对应的存储过程或存储函数。
[0146]
在一个实施例中,目标函数获取模块804还用于从数据库的数据字典中获取存储过程或存储函数的定义语句;对定义语句进行操作关键字匹配,得到匹配结果;根据匹配结果,确定目标存储过程或目标存储函数。
[0147]
在一个实施例中,操作关键字包括更新关键字和删除关键字。目标函数获取模块804还用于对定义语句进行更新关键字和删除关键字匹配;在定义语句中存在更新关键字或删除关键字的情况下,得到第一匹配结果;或者,在定义语句中不存在更新关键字或删除关键字的情况下,得到第二匹配结果。
[0148]
在一个实施例中,目标函数获取模块804还用于在匹配结果为第一匹配结果的情况下,将定义语句对应的存储过程或存储函数作为目标存储过程或目标存储函数。
[0149]
在一个实施例中,检测模块808还用于确定预设时段,预设时段的终止时间为当前时刻,预设时段的时长为预设时长;获取第一数据库表在预设时段的查询类操作次数、更新类操作次数以及删除类操作次数;查询类操作次数超过第一预设阈值,或者更新类操作次数与删除类操作次数之和超过第二预设阈值的情况下,得到表征预设时段为高峰时段的检测结果。
[0150]
在一个实施例中,查杀模块810还用于下线第一数据库表对应的目标存储过程或目标存储函数;在预设的缓冲时间后对第一数据库表再次进行高峰时段检测,得到缓冲结果;在缓冲结果表征第一数据库表仍处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理;或者,在缓冲结果表征第一数据库表未处于高峰时段的情况下,重新上线第一数据库表对应的目标存储过程或目标存储函数。
[0151]
上述批量处理和联机交易的冲突避免装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个
模块对应的操作。
[0152]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种批量处理和联机交易的冲突避免方法。
[0153]
本领域技术人员可以理解,图9中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0154]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0155]
确定日终批量对应的存储过程或存储函数;
[0156]
根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数;
[0157]
确定目标存储过程或目标存储函数对应的多个第一数据库表;
[0158]
针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果;
[0159]
在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。
[0160]
上述批量处理和联机交易的冲突避免计算机设备,确定日终批量对应的存储过程或存储函数;根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数;确定目标存储过程或目标存储函数对应的多个第一数据库表;针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果;在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。本技术提出的批量处理和联机交易的冲突避免计算机设备,先确定日终批量对应的存储过程或存储函数,并从中确定具有高危操作的目标存储过程或目标存储函数,对目标存储过程或目标存储函数涉及的第一数据库表进行高峰时段检测,以对影响高峰联机交易,且在高峰时段运行的目标存储过程或函数进行自动查杀,避免日终批量和联机交易间存在的冲突风险。
[0161]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取批量运行表或批量程序文件;扫描批量运行表或批量程序文件,得到日终批量对应的存储过程或存储函数。
[0162]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:从数据库的数据字典中获取存储过程或存储函数的定义语句;对定义语句进行操作关键字匹配,得到匹配结果;根据匹配结果,确定目标存储过程或目标存储函数。
[0163]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对定义语句进行更新关键字和删除关键字匹配;在定义语句中存在更新关键字或删除关键字的情况下,得到
第一匹配结果;或者,在定义语句中不存在更新关键字或删除关键字的情况下,得到第二匹配结果。
[0164]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在匹配结果为第一匹配结果的情况下,将定义语句对应的存储过程或存储函数作为目标存储过程或目标存储函数。
[0165]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:确定预设时段,预设时段的终止时间为当前时刻,预设时段的时长为预设时长;获取第一数据库表在预设时段的查询类操作次数、更新类操作次数以及删除类操作次数;在查询类操作次数超过第一预设阈值,或者更新类操作次数与删除类操作次数之和超过第二预设阈值的情况下,得到表征预设时段为高峰时段的检测结果。
[0166]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:下线第一数据库表对应的目标存储过程或目标存储函数;在预设的缓冲时间后对第一数据库表再次进行高峰时段检测,得到缓冲结果;在缓冲结果表征第一数据库表仍处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理;或者,在缓冲结果表征第一数据库表未处于高峰时段的情况下,重新上线第一数据库表对应的目标存储过程或目标存储函数。
[0167]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0168]
确定日终批量对应的存储过程或存储函数;
[0169]
根据存储过程或存储函数对应的操作,从存储过程或存储函数中确定目标存储过程或目标存储函数;
[0170]
确定目标存储过程或目标存储函数对应的多个第一数据库表;
[0171]
针对任一第一数据库表,对第一数据库表进行高峰时段检测,得到高峰时段检测结果;
[0172]
在高峰时段检测结果表征第一数据库表处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理。
[0173]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:获取批量运行表或批量程序文件;扫描批量运行表或批量程序文件,得到日终批量对应的存储过程或存储函数。
[0174]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:从数据库的数据字典中获取存储过程或存储函数的定义语句;对定义语句进行操作关键字匹配,得到匹配结果;根据匹配结果,确定目标存储过程或目标存储函数。
[0175]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:对定义语句进行更新关键字和删除关键字匹配;在定义语句中存在更新关键字或删除关键字的情况下,得到第一匹配结果;或者,在定义语句中不存在更新关键字或删除关键字的情况下,得到第二匹配结果。
[0176]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:在匹配结果为第一匹配结果的情况下,将定义语句对应的存储过程或存储函数作为目标存储过程或目标存储函数。
[0177]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:确定预设时段,预设时段的终止时间为当前时刻,预设时段的时长为预设时长;获取第一数据库表在预设时段的查询类操作次数、更新类操作次数以及删除类操作次数;在查询类操作次数超过第一预设阈值,或者更新类操作次数与删除类操作次数之和超过第二预设阈值的情况下,得到表征预设时段为高峰时段的检测结果。
[0178]
在一个实施例中,计算机程序被处理器执行时实现以下步骤:下线第一数据库表对应的目标存储过程或目标存储函数;在预设的缓冲时间后对第一数据库表再次进行高峰时段检测,得到缓冲结果;在缓冲结果表征第一数据库表仍处于高峰时段的情况下,对第一数据库表对应的目标存储过程或目标存储函数进行查杀处理;或者,在缓冲结果表征第一数据库表未处于高峰时段的情况下,重新上线第一数据库表对应的目标存储过程或目标存储函数。
[0179]
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0180]
需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0181]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0182]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0183]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献