CN114443652A - 一种断点sql的运行方法、系统及装置 - Google Patents
一种断点sql的运行方法、系统及装置 Download PDFInfo
- Publication number
- CN114443652A CN114443652A CN202210018035.2A CN202210018035A CN114443652A CN 114443652 A CN114443652 A CN 114443652A CN 202210018035 A CN202210018035 A CN 202210018035A CN 114443652 A CN114443652 A CN 114443652A
- Authority
- CN
- China
- Prior art keywords
- sql
- data
- time point
- sqln
- result set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000011218 segmentation Effects 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000004069 differentiation Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出的一种断点SQL的运行方法、系统及装置,所述方法包括:读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B;当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中;当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。本发明实现了SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。
Description
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种断点SQL的运行方法、系统及装置。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
SQL语句的状态一般有运行中、停止两种状态。如果SQL在运行过程中进行了停止操作,SQL之前所有的运行状态及中间结果集将不能被保存,下次再运行该SQL时需要重新开始运行该SQL,对运行时间较长的SQL,比较浪费时间,显然是不能接受的。
发明内容
针对以上问题,本发明的目的在于提供一种断点SQL的运行方法、系统及装置,能够把运行中的SQL语句暂停,保留当前SQL运行的状态和中间结果集,下次再运行时直接从暂停点运行,跳过运行暂停点之前的SQL语句。
本发明为实现上述目的,通过以下技术方案实现:一种断点SQL的运行方法,包括:
读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B;
按照SQL执行计划运行SQL;
当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中;
当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。
进一步,所述按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,包括:
根据SQL执行计划的N个执行步骤分别将第1执行步骤生成第一SQL分段SQL01、将第2执行步骤生成第二SQL分段SQL02、……将第N执行步骤生成第NSQL分段SQLN;将SQL01至SQLN对应的SQL语句内容放入元数据表A中,并记录分段时间点T0到元数据表A中。
进一步,若所述暂停时间点为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的数据源。
进一步,若所述暂停时间点为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微分2的SQL语句、第n SQL分段SQLn之后的SQL语句存储元数据表A中;
当SQL再次启动时,通过读取元数据表A,获取暂停时间点T2,然后运行SQLn微分2的SQL语句,以及第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T2对应的数据结果集作为当前SQL的数据源。
进一步,所述SQL执行计划包括多个SQL分段,SQL分段之间按照相关逻辑完成对源数据表T的操作,获取数据结果。
进一步,所述方法还包括:
实时查询系统视图以监控源数据表T的数据内容是否发生变化,如果发生变化,则表示源数据表T的数据更新;此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
进一步,所述实时查询系统视图以监控源数据表T的数据内容是否发生变化,包括:
检查系统视图字段值中的最后表的DDL更新时间,并和上一次检查结果进行对比,若相同,则监控源数据表T的数据内容未变化,否则监控源数据表T的数据内容已发生变化。
进一步,所述方法还包括:
实时监控SQL执行计划视图,如果和上次查询的执行计划不一致,则认为执行计划发生变化,此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
相应的,本发明还公开了一种断点SQL的运行系统,包括:SQL分段单元,用于读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段;数据记录单元,用于创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A;还用于创建数据表B,将暂停时间点之前SQL运行的数据结果集存储至数据表B中;
SQL运行单元,用于按照SQL执行计划运行SQL;还用于将数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源,运行暂停时间点之后的SQL分段中的SQL语句;
SQL微分单元,用于按照暂停时间点把SQL分段分解成2个业务逻辑关联的子SQL分段。
相应的,本发明公开了一种断点SQL的运行装置,包括:
存储器,用于存储断点SQL的运行程序;
处理器,用于执行所述断点SQL的运行程序时实现如上文任一项所述断点SQL的运行方法的步骤。
对比现有技术,本发明有益效果在于:本发明提供了一种断点SQL的运行方法、系统及装置,首先按照SQL执行计划对SQL语句进行分段,必要时对SQL的分段进行微分段(二次分段),以确定暂停点位置。通过保存SQL暂停时间点之前的中间结果集及暂停时间点之后的SQL语句,实现SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1是本发明具体实施方式的方法流程图。
附图2是本发明具体实施方式的系统结构图。
图中,1为SQL分段单元;2为数据记录单元;3为SQL运行单元;4为SQL微分单元。
具体实施方式
本发明的核心是提供一种断点SQL的运行方法,现有技术中,如果SQL在运行过程中进行了停止操作,SQL之前所有的运行状态及中间结果集将不能被保存,下次再运行该SQL时需要重新开始运行该SQL,对运行时间较长的SQL,比较浪费时间,显然是不能接受的。
而本发明提供的断点SQL的运行方法,首先,读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B。然后,按照SQL执行计划运行SQL。当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中。当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。由此可见,本发明能够把运行中的SQL语句暂停,保留当前SQL运行的状态和中间结果集,下次再运行时直接从暂停点运行,跳过运行暂停点之前的SQL语句。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
如图1所示,本实施例提供了一种断点SQL的运行方法,包括如下步骤:
S1:读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B。
具体来说,首先根据SQL执行计划的N个执行步骤分别将第1执行步骤生成第一SQL分段SQL01、将第2执行步骤生成第二SQL分段SQL02、……将第N执行步骤生成第NSQL分段SQLN。然后,将SQL01至SQLN对应的SQL语句内容放入元数据表A中,并记录分段时间点T0到元数据表A中。同时创建用于保存数据结果集的数据表B。
其中,SQL执行计划包括多个SQL分段,SQL分段之间按照相关逻辑完成对源数据表T的操作,获取数据结果。
S2:按照SQL执行计划运行SQL。
S3:当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中。
S4:当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。
其中,根据暂停时间点所处的位置的不同,SQL暂停后的处理过程和相应的重启过程还包括一下两种情况:
1、若所述暂停时间点为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,然后运行第nSQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T1对应的数据结果集作为当前SQL的数据源。
2、若所述暂停时间点为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微分2的SQL语句、第n SQL分段SQLn之后的SQL语句存储元数据表A中。当SQL再次启动时,通过读取元数据表A,获取暂停时间点T2,然后运行SQLn微分2的SQL语句,以及第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T2对应的数据结果集作为当前SQL的数据源。
另外,为了避免SQL执行计划将受源数据表T的数据更新情况影响,发生执行计划改变的情况,导致断点重新运行SQL出现数据结果集错误,致使最终运行结果错误。本方法还具有数据表和执行计划检查功能,具体为:
实时查询系统视图以监控源数据表T的数据内容是否发生变化。通过检查系统视图字段值中的最后表的DDL更新时间,并和上一次检查结果进行对比来确定是否发生变化。如果发生变化,则表示源数据表T的数据更新;此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
实时监控SQL执行计划视图,如果和上次查询的执行计划不一致,则认为执行计划发生变化,此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
本实施例提供了一种断点SQL的运行方法,首先按照SQL执行计划对SQL语句进行分段,必要时对SQL的分段进行微分段(二次分段),以确定暂停点位置。通过保存SQL暂停时间点之前的中间结果集及暂停时间点之后的SQL语句,实现SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。
实施例二:
基于实施例一,本实施例还提供了一种断点SQL的运行方法,具体过程如下:
(1)读取SQL执行计划(SQL执行计划由多个SQL组成,SQL之间按照相关逻辑完成对相关源数据表T的操作,获取数据结果),按照执行计划的执行步骤,把SQL分段,如第一个执行步骤生成SQL01、第二个执行步骤生成SQL02…;新建元数据表A(表字段名称:时间点、SQL语句),把相关SQL01、SQL02等SQL语句内容放入元数据表A中,并记录分段时间点T0到表A;同时创建数据表B(表字段名称:时间点、SQL执行生成的数据结果集),为后面保存数据结果集做准备。表A与表B缓存到内存中,后续从中读取数据时,直接从内存中读取,加快查询速度。
(2)假如T1时间点暂停SQL运行,如果此时暂停点位于SQL01和SQL02之间,数据记录装置则读取SQL01的SQL运行的数据结果集,把数据结果集存放于数据表B中,同时T1时间点也存入数据表B中;将T1时间点、SQL01之后的SQL语句(SQL02和之后的SQL),放入元数据表A中。
(3)SQL再次启动时,读取元数据表A,读取最新时间点T1,然后运行最新时间点T1在元数据表A中记录的SQL(即SQL02和之后的SQL),同时将读取T1时间点数据表B中SQL01的数据结果集作为SQL02和之后SQL的数据源。这样实现了SQL重新启动后从T1时间点的状态继续执行SQL,T1时间点之前的SQL语句将不会被重新运行,节约了时间成本。
(4)假如T2时间点暂停SQL执行,如果此时暂停点位于SQL02之内,对SQL02进行微分,即按照时间点把SQL02微分成SQL02微分1、SQL02微分2。微分过程具体为:将SQL分段拆分,分解成2个业务逻辑关联的子SQL(SQL02微分1、SQL02微分2),SQL02微分1的结果集作为SQL02微分2的输入,最终SQL02微分2获取的数据结果集与SQL02的数据结果集一致。
此时,将SQL02微分2和之后的SQL内容存放在元数据表A中,并记录相应的暂停时间点T2;同时读取SQL02微分1执行的数据结果集,并存放于数据表B中,并记录对应时间点T2。
(5)SQL再次启动时,读取元数据表A的最新断点时间点T2,然后读取T2时间点元数据表A记录的SQL02微分2及之后SQL,运行SQL,SQL01及SQL02微分1的数据结果集将从数据表B中被读取,并作为SQL02微分2及之后SQL的数据源。这样实现了SQL重新启动后从T2时间点的状态继续执行SQL,T2时间点之前的SQL语句将不会被重新运行,节约了时间成本。
(6)默认情况下SQL执行计划将受源数据表T的数据更新情况影响,有时会发生执行计划改变的情况,即执行计划步骤发生改变。这样就出现表T数据、执行计划改变的情况,将导致断点重新运行SQL出现数据结果集错误,致使最终运行结果错误。所以要避免这种情况,在第1-5步骤中增加检查功能。
功能1:检查数据表T变化情况。实时查询系统视图以监控表T数据内容是否发生变化(即检查系统视图字段值:最后表的DDL更新时间),和上一次查询结果进行对比,如果发生变化,则表示数据表T数据更新,然后删除元数据表A、元数据表B,重新开始从第1步开始。
功能2:检查执行计划变化情况。实时监控SQL执行计划视图,如果和上次查询的执行计划不一致,则认为执行计划发生变化,此时获取最新SQL执行计划,然后删除元数据表A、元数据表B,重新开始从第1步开始。
实施例三:
基于实施例一,如图2所示,本发明还公开了一种断点SQL的运行系统,包括:SQL分段单元1、数据记录单元2、SQL运行单元3和SQL微分单元4。
SQL分段单元1,用于读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段。
数据记录单元2,用于创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A;还用于创建数据表B,将暂停时间点之前SQL运行的数据结果集存储至数据表B中。
SQL运行单元3,用于按照SQL执行计划运行SQL;还用于将数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源,运行暂停时间点之后的SQL分段中的SQL语句。
SQL微分单元4,用于按照暂停时间点把SQL分段分解成2个业务逻辑关联的子SQL分段。
本实施例提供了一种断点SQL的运行系统,能够把运行中的SQL语句暂停,保留当前SQL运行的状态和中间结果集,下次再运行时直接从暂停点运行,跳过运行暂停点之前的SQL语句。
实施例三:
本实施例公开了一种断点SQL的运行装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的断点SQL的运行程序时实现以下步骤:
1、读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段,创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A,同时创建用于保存数据结果集的数据表B。
2、按照SQL执行计划运行SQL。
3、当SQL暂停运行后,读取暂停时间点之前SQL运行的数据结果集,并存储至数据表B中;同时,将暂停时间点、暂停时间点之后的SQL分段中的SQL语句存储至元数据表A中。
4、当SQL再次启动时,通过读取元数据表A,获取暂停时间点,然后运行暂停时间点之后的SQL分段中的SQL语句,同时读取数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源。
进一步的,本实施例中的断点SQL的运行装置,还可以包括:
输入接口,用于获取外界导入的断点SQL的运行程序,并将获取到的断点SQL的运行程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。
输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于USB接口、串行接口等。
通讯单元,用于在断点SQL的运行装置和外部服务器之间建立远程通讯连接,以便于断点SQL的运行装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。
键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。
显示器,用于运行服务器供电线路短路定位过程的相关信息进行实时显示。
鼠标,可以用于协助用户输入数据并简化用户的操作。
综上所述,本发明通过保存SQL暂停时间点之前的中间结果集及暂停时间点之后的SQL语句,实现SQL重新运行后可以从暂停点开始运行,以减少SQL运行时间。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的断点SQL的运行方法、系统及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
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微分2的SQL语句、第n SQL分段SQLn之后的SQL语句存储元数据表A中;
当SQL再次启动时,通过读取元数据表A,获取暂停时间点T2,然后运行SQLn微分2的SQL语句,以及第n SQL分段SQLn之后的SQL语句,同时读取数据表B中暂停时间点T2对应的数据结果集作为当前SQL的数据源。
5.根据权利要求1所述的断点SQL的运行方法,其特征在于,所述SQL执行计划包括多个SQL分段,SQL分段之间按照相关逻辑完成对源数据表T的操作,获取数据结果。
6.根据权利要求5所述的断点SQL的运行方法,其特征在于,所述方法还包括:实时查询系统视图以监控源数据表T的数据内容是否发生变化,如果发生变化,则表示源数据表T的数据更新;此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
7.根据权利要求6所述的断点SQL的运行方法,其特征在于,所述实时查询系统视图以监控源数据表T的数据内容是否发生变化,包括:
检查系统视图字段值中的最后表的DDL更新时间,并和上一次检查结果进行对比,若相同,则监控源数据表T的数据内容未变化,否则监控源数据表T的数据内容已发生变化。
8.根据权利要求1所述的断点SQL的运行方法,其特征在于,所述方法还包括:实时监控SQL执行计划视图,如果和上次查询的执行计划不一致,则认为执行计划发生变化,此时删除元数据表A、元数据表B,并重新按照SQL执行计划运行SQL。
9.一种断点SQL的运行系统,其特征在于,包括:
SQL分段单元,用于读取SQL执行计划,按照SQL执行计划的执行步骤将SQL分段;数据记录单元,用于创建元数据表A,将每个SQL分段的SQL语句和分段时间点记录到元数据表A;还用于创建数据表B,将暂停时间点之前SQL运行的数据结果集存储至数据表B中;
SQL运行单元,用于按照SQL执行计划运行SQL;还用于将数据表B中暂停时间点之前SQL运行的数据结果集作为当前SQL的数据源,运行暂停时间点之后的SQL分段中的SQL语句;
SQL微分单元,用于按照暂停时间点把SQL分段分解成2个业务逻辑关联的子SQL分段。
10.一种断点SQL的运行装置,其特征在于,包括:
存储器,用于存储断点SQL的运行程序;
处理器,用于执行所述断点SQL的运行程序时实现如权利要求1至8任一项权利要求所述的断点SQL的运行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210018035.2A CN114443652B (zh) | 2022-01-07 | 2022-01-07 | 一种断点sql的运行方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210018035.2A CN114443652B (zh) | 2022-01-07 | 2022-01-07 | 一种断点sql的运行方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114443652A true CN114443652A (zh) | 2022-05-06 |
CN114443652B CN114443652B (zh) | 2024-01-19 |
Family
ID=81368676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210018035.2A Active CN114443652B (zh) | 2022-01-07 | 2022-01-07 | 一种断点sql的运行方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443652B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140089294A1 (en) * | 2012-09-26 | 2014-03-27 | Microsoft Corporation | Sql generation for assert, update and delete relational trees |
CN110633300A (zh) * | 2019-08-23 | 2019-12-31 | 苏州浪潮智能科技有限公司 | 一种嵌套查询的断点续运行的方法及装置 |
CN111708790A (zh) * | 2020-05-27 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 一种事务处理方法和装置 |
CN113360495A (zh) * | 2021-04-20 | 2021-09-07 | 山东英信计算机技术有限公司 | 一种数据库查询中断的恢复方法、装置、设备及可读介质 |
-
2022
- 2022-01-07 CN CN202210018035.2A patent/CN114443652B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140089294A1 (en) * | 2012-09-26 | 2014-03-27 | Microsoft Corporation | Sql generation for assert, update and delete relational trees |
CN110633300A (zh) * | 2019-08-23 | 2019-12-31 | 苏州浪潮智能科技有限公司 | 一种嵌套查询的断点续运行的方法及装置 |
CN111708790A (zh) * | 2020-05-27 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 一种事务处理方法和装置 |
CN113360495A (zh) * | 2021-04-20 | 2021-09-07 | 山东英信计算机技术有限公司 | 一种数据库查询中断的恢复方法、装置、设备及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114443652B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120158795A1 (en) | Entity triggers for materialized view maintenance | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN106294776A (zh) | 一种数据处理方法及装置 | |
CN113360519B (zh) | 数据处理方法、装置、设备和存储介质 | |
US20230012642A1 (en) | Method and device for snapshotting metadata, and storage medium | |
CN114201615B (zh) | 基于数据快照的科研数据变动回顾方法及服务器 | |
CN111427577A (zh) | 代码处理方法、装置及服务器 | |
CN108959454B (zh) | 一种提示子句指定方法、装置、设备及存储介质 | |
CN114330272A (zh) | 一种病历模板生成方法、装置、电子设备及存储介质 | |
US20210149870A1 (en) | Method, apparatus, and computer program product for improved tracking of state data | |
CN113010208A (zh) | 一种版本信息的生成方法、装置、设备及存储介质 | |
CN109977104B (zh) | 数据管理方法及装置 | |
CN103809915A (zh) | 一种磁盘文件的读写方法和装置 | |
CN116483707A (zh) | 测试方法、装置、设备、存储介质及程序产品 | |
CN114443652A (zh) | 一种断点sql的运行方法、系统及装置 | |
CN111221817B (zh) | 业务信息数据存储方法、装置、计算机设备及存储介质 | |
CN113110846A (zh) | 一种环境变量的获取方法及装置 | |
CN112487006A (zh) | 一种动态编辑数据结构并生成数据库表的实现方法 | |
CN113779117A (zh) | 一种数据监控方法、装置、存储介质和电子设备 | |
CN116450682B (zh) | 基于数据合并的模型生成方法、装置、设备及介质 | |
CN112685431B (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN112883695B (zh) | 生成报表模板和显示数据报表的方法、装置、设备和介质 | |
CN116610724B (zh) | 一种日志数据追踪方法、装置、电子设备和存储介质 | |
CN112527880B (zh) | 大数据集群元数据信息的采集方法、装置、设备及介质 | |
KR20070097660A (ko) | 이동통신 단말기에서 에스큐엘을 이용한 멀티미디어 파일관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |