一种断点SQL的运行方法、系统及装置制造方法及图纸

技术编号:33347915 阅读:8 留言:0更新日期:2022-05-08 09:47
本发明专利技术提出的一种断点SQL的运行方法、系统及装置,所述方法包括:读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B;当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中;当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。本发明专利技术实现了SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。以减少SQL运行时间。以减少SQL运行时间。

【技术实现步骤摘要】
一种断点SQL的运行方法、系统及装置


[0001]本专利技术涉及计算机
,更具体的说是涉及一种断点SQL的运行方法、系统及装置。

技术介绍

[0002]结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
[0003]SQL语句的状态一般有运行中、停止两种状态。如果SQL在运行过程中进行了停止操作,SQL之前所有的运行状态及中间结果集将不能被保存,下次再运行该SQL时需要重新开始运行该SQL,对运行时间较长的SQL,比较浪费时间,显然是不能接受的。

技术实现思路

[0004]针对以上问题,本专利技术的目的在于提供一种断点SQL的运行方法、系统及装置,能够把运行中的SQL语句暂停,保留当前SQL运行的状态和中间结果集,下次再运行时直接从暂停点运行,跳过运行暂停点之前的SQL语句。
[0005]本专利技术为实现上述目的,通过以下技术方案实现:一种断点SQL的运行方法,包括:
[0006]读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B;
[0007]按照SQL执行计划运行SQL;
[0008]当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中;
[0009]当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。
[0010]进一步,所述按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,包括:
[0011]根据SQL执行计划的N个执行步骤分别将第1执行步骤生成第一SQL分段SQL01、将第2执行步骤生成第二SQL分段SQL02、
……
将第N执行步骤生成第NSQL分段SQLN;将SQL01至SQLN对应的SQL语句内容放入元数据表A中,并记录分段时间点T0到元数据表A中。
[0012]进一步,若所述暂停时间点为T1,T1位于第n SQL分段SQLn执行完成后,且第n+1SQL分段SQL(n+1)未执行,其中1≤n<N;
[0013]读取SQLn的SQL运行的数据结果集,将T1时间点和数据结果集存放于数据表B中;同时将T1时间点、第n SQL分段SQLn之后的SQL语句存储元数据表A中;
[0014]当SQL再次启动时,通过读取元数据表A,获取暂停时间点T1,然后运行第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T1对应的数据结果集作为当前SQL的数据源。
[0015]进一步,若所述暂停时间点为T2,T2位于第n SQL分段SQLn执行过程中,其中1≤n<N;
[0016]按照暂停时间点T2把第n SQL分段SQLn分解成2个业务逻辑关联的子SQL分段,记为SQLn微分1、SQLn微分2;
[0017]读取SQLn微分1的SQL运行的数据结果集,将T2时间点和数据结果集存放于数据表B中;同时将T2时间点、SQLn微分2的SQL语句、第n SQL分段SQLn之后的SQL语句存储元数据表A中;
[0018]当SQL再次启动时,通过读取元数据表A,获取暂停时间点T2,然后运行SQLn微分2的SQL语句,以及第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T2对应的数据结果集作为当前SQL的数据源。
[0019]进一步,所述SQL执行计划包括多个SQL分段,SQL分段之间按照相关逻辑完成对源数据表T的操作,获取数据结果。
[0020]进一步,所述方法还包括:
[0021]实时查询系统视图以监控源数据表T的数据内容是否发生变化,如果发生变化,则表示源数据表T的数据更新;此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
[0022]进一步,所述实时查询系统视图以监控源数据表T的数据内容是否发生变化,包括:
[0023]检查系统视图字段值中的最后表的DDL更新时间,并和上一次检查结果进行对比,若相同,则监控源数据表T的数据内容未变化,否则监控源数据表T的数据内容已发生变化。
[0024]进一步,所述方法还包括:
[0025]实时监控SQL执行计划视图,如果和上次查询的执行计划不一致,则认为执行计划发生变化,此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
[0026]相应的,本专利技术还公开了一种断点SQL的运行系统,包括:SQL分段单元,用于读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段;数据记录单元,用于创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A;还用于创建数据表B,将暂停时间点之前SQL运行的数据结果集存储至数据表B中;
[0027]SQL运行单元,用于按照SQL执行计划运行SQL;还用于将数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源,运行暂停时间点之后的SQL分段中的SQL语句;
[0028]SQL微分单元,用于按照暂停时间点把SQL分段分解成2个业务逻辑关联的子SQL分段。
[0029]相应的,本专利技术公开了一种断点SQL的运行装置,包括:
[0030]存储器,用于存储断点SQL的运行程序;
[0031]处理器,用于执行所述断点SQL的运行程序时实现如上文任一项所述断点SQL的运行方法的步骤。
[0032]对比现有技术,本专利技术有益效果在于:本专利技术提供了一种断点SQL的运行方法、系统及装置,首先按照SQL执行计划对SQL语句进行分段,必要时对SQL的分段进行微分段(二次分段),以确定暂停点位置。通过保存SQL暂停时间点之前的中间结果集及暂停时间点之后的SQL语句,实现SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。
[0033]由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
[0034]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种断点SQL的运行方法,其特征在于,包括:读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B;按照SQL执行计划运行SQL;当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中;当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。2.根据权利要求1所述的断点SQL的运行方法,其特征在于:所述按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,包括:根据SQL执行计划的N个执行步骤分别将第1执行步骤生成第一SQL分段SQL01、将第2执行步骤生成第二SQL分段SQL02、
……
将第N执行步骤生成第NSQL分段SQLN;将SQL01至SQLN对应的SQL语句内容放入元数据表A中,并记录分段时间点T0到元数据表A中。3.根据权利要求2所述的断点SQL的运行方法,其特征在于,若所述暂停时间点为T1,T1位于第n SQL分段SQLn执行完成后,且第n+1SQL分段SQL(n+1)未执行,其中1≤n<N;读取SQLn的SQL运行的数据结果集,将T1时间点和数据结果集存放于数据表B中;同时将T1时间点、第n SQL分段SQLn之后的SQL语句存储元数据表A中;当SQL再次启动时,通过读取元数据表A,获取暂停时间点T1,然后运行第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T1对应的数据结果集作为当前SQL的数据源。4.根据权利要求2所述的断点SQL的运行方法,其特征在于,若所述暂停时间点为T2,T2位于第n SQL分段SQLn执行过程中,其中1≤n<N;按照暂停时间点T2把第n SQL分段SQLn分解成2个业务逻辑关联的子SQL分段,记为SQLn微分1、SQLn微分2;读取SQLn微分1的SQL运行的数据结果集,将T2时间点和数据结果集存放于数据表B中;同时将T2时间点、SQLn微分...

【专利技术属性】
技术研发人员:魏本帅
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1