CN111459946B - 一种数据表快速汇总方法、装置、计算机设备及存储介质 - Google Patents
一种数据表快速汇总方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111459946B CN111459946B CN202010270608.1A CN202010270608A CN111459946B CN 111459946 B CN111459946 B CN 111459946B CN 202010270608 A CN202010270608 A CN 202010270608A CN 111459946 B CN111459946 B CN 111459946B
- Authority
- CN
- China
- Prior art keywords
- record
- records
- query
- accelerated
- time
- 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.)
- Active
Links
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/23—Updating
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据表快速汇总方法、装置、计算机设备及存储介质,其中,方法包括:若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回。本发明实施例提供的方法通过减少读取的记录量,可以有效的提高反复调用的求和效率,并且每次求和的结果,都可以对以后的求和做出贡献。
Description
技术领域
本发明涉及数据表领域,尤其涉及一种数据表快速汇总方法、装置、计算机设备及存储介质。
背景技术
信息系统中经常会需要使用流水表,流水表是指对一类动作的每次执行都会产生一次记录的表,例如仓库的出入库记录、银行的交易流水等。而信息系统通常还需要记录流水的结果汇总,以提供用户查询,例如仓库的当前总库存清单、银行的账面余额等。因此,所有对这些值发生变化的操作,就必须同时录入流水,并修改汇总的值。
有时,由于软件设计缺陷、实现缺陷、系统不稳定或数据部分恢复的问题,会导致汇总值与流水不匹配。或者,由于用户的实际需求,导致汇总值无意义(例如用户想查看某一特定时刻的账户余额)。这些情况下,都需要对流水表进行分组求和。
分组求和需要对全表读取,而流水表数据量大,故求和操作会带来严重开销。目前,数据库可以提供的技术,只能涵盖排序,例如索引与聚集索引。这些技术在做分组求和时,可以有效的提高数据的筛选速度,但这些技术并不会减少需要求和的记录数量。
另外,部分系统会预制一些条件(例如每天0点对流水表做独立汇总),通过有计划的归档,减少实时业务系统的分组求和需求。但是当用户的条件不属于预制条件时,帮助有限或者没有帮助。对于查询场景复杂的系统,预制条件命中的概率过低,因此意义不明显。
发明内容
本发明实施例提供了一种数据表快速汇总方法、装置、计算机设备及存储介质,旨在解决现有技术中数据表在需要进行求和时开销大、不实用等问题。
本发明实施例提供一种数据表快速汇总方法,其中,包括:
当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
进一步,还包括:
当检测到对数据表中的记录进行变更操作的指令时,预先在编辑状态表中声明变更操作的范围。
进一步,所述建立加速记录的流程还包括:
定期检测编辑状态表中是否有属于待汇总范围的声明,若无则以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回;若否则不建立加速记录,并将汇总结果返回。
进一步,还包括:
根据查询指令对待汇总范围内的记录进行锁定,控制禁止对待汇总范围内的记录进行变更。
进一步,所述根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回,包括:
取出数据表中距离当前查询的查询时间最近且不晚于当前查询的查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录;
若取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
进一步,所述建立加速记录的流程还包括:
若取出的记录的类型为一般记录,则判断所述一般记录的插入时间与当前查询的查询时间的差值是否超过阈值,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录。
进一步,还包括:
若抽取出的记录的类型为一般记录,则判断所述一般记录的插入时间与查询时间的差值是否超过阈值,若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录。
本发明实施例还提供一种数据表快速汇总装置,其中,包括:
记录处理单元,用于当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
记录抽取单元,用于从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
第一记录汇总单元,用于若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
第二记录汇总单元,用于若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述的数据表快速汇总方法。
本发明实施例还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如上所述的数据表快速汇总方法。
本发明实施例提供了一种数据表快速汇总方法、装置、计算机设备及存储介质,其中,方法包括:当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。本发明实施例提供的方法通过减少读取的记录量,可以有效的提高反复调用的求和效率,并且每次求和的结果,都可以对以后的求和做出贡献。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据表快速汇总方法的流程示意图;
图2为本发明实施例提供的一种数据表快速汇总装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的一种数据表快速汇总方法的流程示意图,如图所示,该方法包括步骤S101~S104:
S101、当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
S102、从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
S103、若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
S104、若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
简单的说,在查询过程中,根据过滤条件筛选数据后,先读取第一条记录。如果它是一条加速记录,直接将其返回即可,如果它是一条普通记录,则需要进行求和,然后继续读取下一条记录,直至汇总完所有记录。
通过本实施例提供的方法,在对数据表进行汇总求和时,可以减少读取的记录量,从而有效的提高反复调用的求和效率。并且每次求和(或汇总)的结果,都可以对以后的求和做出贡献。
需说明的是,本发明各实施例中的数据表也可以称为记录表,其中的值是指某个关键字段的值,例如余额字段或库存字段等等的值。
在所述步骤S101中,当接收到查询指令时,可以从数据表中取出相应的记录,具体可以取出距离查询时间最近且不晚于所述查询时间的N+1条记录。这样这些取出的记录的插入时间将不会晚于查询时间。然后对这N+1条记录进行降序处理,降序的方式是依据插入时间,插入时间越晚,则越靠前,插入时间越早,则越靠后。这样可以形成多条可供查询的记录。
在所述步骤S102中,从前至后逐条抽取所述N+1条记录中的每一条记录,由于前述步骤是根据插入时间进行降序处理,所以插入时间晚的记录排列在前,故此处是先抽取插入时间晚的记录,再抽取插入时间早的记录。每条记录具有对应的类型。例如数据表中普通的记录则为一般记录,数据表中用来加速的记录则为加速记录,加速记录又具体可以分为普通的加速记录(即已创建好的加速记录)和正在创建的加速记录。
在所述步骤S103中,如果抽取出的记录的类型为一般记录,则需要进一步判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录。
本实施例中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
所述加速记录是用来暂存其时刻(即加速记录的插入时间)与更早的所有同过滤条件字段的记录的值的求和结果。某时刻、对于某个过滤条件字段的加速,包含了从表的最久记录至这个时刻(含)止,所有同样过滤条件字段的所有类型为一般数据的记录,按分组条件字段分组后的记录的值之和。
当进行求和时,在按照过滤条件字段以及结束时间过滤后、将按照时间从新至旧排序,逐条判断。如记录为一般记录,则将其数量按照分组条件字段分别在内存中求和,并处理下一条记录;如记录为加速记录,则可以将其包含的每个分组条件对应的数量均加入内存中的求和结果,结束处理;如无下一条记录,结束处理。
通过加速记录的引入,可以减少求和时扫描的记录数量,极大的提升求和操作的效率。但加速记录需要确保其值的准确性,并在保证此条件的同时,尽量减少对此表高频次操作(例如追加操作)的影响。
加速记录的结构:因为加速记录包含了对每个分组条件字段的分组求和结果,所以可将加速记录设置为主从表结构:主表和从表。主表为记录表:主键随机,数据类型为“加速记录”,插入时间为加速记录的截止时间,过滤条件字段与其加速包含的记录相同,分组条件字段与数量则为空。从表为加速记录表(或称加速数据表):主键随机,记录表外键为上条记录的主键,分组条件字段为分组计算时的条件字段,数量(所述数量即为值)则为求和数量。加速记录的结构可以参考后续的实施例1。
在所述步骤S104中,如果抽取出的记录的类型为加速记录,说明在N+1条记录内已有加速记录,所以直接将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回即可。
在一实施例中,所述的数据表快速汇总方法还包括:
当检测到对数据表中的记录进行变更操作的指令时,预先在编辑状态表中声明变更操作的范围。
此处是指,如果有对数据表中的记录进行变更的操作,则需要在编辑状态表中进行声明,这样在查询过程中,可以及时检查自身的待汇总范围,并进行相应的处理。
本发明实施例的方法还包括:
当对数据表中的记录进行变更操作时,清理所有被变更操作影响的加速记录。即假如加速记录包含该变更操作对应的记录的值,那么该加速记录将变得不准确,此时的加速记录失去意义,所以需要进行对相应加速记录进行清理。当然,上述的变更操作针对的是一般记录,对于加速记录则一般不会进行变更操作。例如数据表中,一条一般记录的插入时间为1月23日12:00,另一条加速记录的插入时间为1月23日13:00,所以该加速记录结果包含了该一般记录的值,所以当对该一般记录进行了修改,那么加速记录的结果将变得不准确,所以需要删除该被影响的加速记录。当然被影响的加速记录可能不止一条,所有被影响的加速记录都应被清理。
在一实施例中,所述建立加速记录的流程还包括:
定期检测编辑状态表中是否有属于待汇总范围的声明,若无则以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回;若否则不建立加速记录,并将汇总结果返回。
此实施例就是在查询过程中,定期检测是否有属于待汇总范围的声明,如果有的话,则不需要建立加速记录,但还是要将汇总结果返回。这是因为,如果此时继续建立加速记录,那么建立完加速记录之后,会对记录进行变更,那么之前建立的加速记录就会失去意义。
在一实施例中,所述的数据表快速汇总方法还包括:
根据查询指令对待汇总范围内的记录进行锁定,控制禁止对待汇总范围内的记录进行变更。
当一个查询被发起,通过条件给定一个时间以及过滤条件后,记录表中大批量的数据会被选中待汇总处理。同时这个查询的事务也会被数据库锁定。即在查询完成之前,本事务外的任何操作,不但不可以删除及修改这些被选中的数据,也不可以新增会属于在原查询条件范围内的记录。这个事务,确保了汇总计算的过程中,待汇总的数据不会发生变化,以保证产生的加速记录与被汇总的数据结果一致,而不会因为并发的变更操作而产生错误。
如果此时存在一个变更操作,刚好属于原查询条件范围内,它的操作会因为上述查询事务的锁定而进入等待阶段。而变更操作完成后,会清理所有被影响的加速记录,因此其实此时应尽快结束加速记录的创建过程,既可以减少变更操作的等待时间,也可以减少无意义的记录写入。因此变更操作进行的过程中,会先在编辑状态表中声明,以期正在并发的查询操作得知并主动中止。
为此,查询操作在汇总的过程中,会定期的去检测编辑状态表中是否有属于自己范围的声明。如果无则继续;如果有,则会停止尝试将结果保存到加速记录中。但汇总操作仍会继续,因为发起查询操作者,仍期待得到一个结果,虽然这个结果可能会因为并发操作而变得不准确。这个不准确的操作,可能对发起者仍有意义,但不可以以加速记录的形式固化在数据库中。
在一实施例中,所述根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回,包括:
取出数据表中距离当前查询的查询时间最近且不晚于当前查询的查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录;
若取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
在查询时间上创建一条加速记录,依次处理记录,并将其结果汇总到加速记录保存后,再将结果返回。如果处理到了一条加速记录,因为它会涵盖后续所有记录,因此不必再继续处理后续记录。如果一直没有遇到加速记录,则需要处理到最后一条符合条件的数据。
这样做之后,会产生一条与查询时间、过滤条件有关的加速记录,以加速后续查询。
但这样做可能会产生有一个新问题:即只会创建一条加速记录。例如以当前日期查询,过程中虽然会一直处理到上一条加速记录或者最久的第一条记录,但最后只会保存一个最终结果。如果稍后再有使用者以较早时间再做一次查询,则需要几乎重复这个过程。因此,这个查询会在处理了一定时间间隔、一定数量的记录仍未遇到加速记录时,即暂停后续处理,而再以当前待处理的后一条数据的条件,递归调用自身,并将调用的结果直接汇总到自己的处理结果中。
例如有100条数据待处理,系统设置成只处理10条(即前述的N)。则系统会在处理到第11条时判断它是否为加速记录,如果仍然不是,则暂停自己的后续操作,并递归调用自己,要求从第11条记录再开始操作,并将子调用的结果直接汇集到已经汇总好的1-10条记录的结果中,再生成加速记录。而后续操作是处理90条数据,会进行同样的过程,再次递归……全部处理完成后,这样会产生10条加速记录,每相隔10条原始记录均会产生一个加速记录。当有后续查询的时间范围比本次查询小时,会遇到本次创建的加速记录而无需再完成一次全部扫描。由于建立加速记录本身也会带来存储以及写入开销,当最后一条加速记录距离查询时间不太远(指条目数量)时,建立新的加速记录带来的负面效果大于后续加速意义,因此倾向于不建立加速记录,而是尽可能每隔N条创建一条加速记录。
由于加速记录必须包含所有分组,因此即使查询要求只对单一分组进行,只要需要创建加速记录,也必须对所有分组数据进行汇总、保存。只是在返回值时,只需要返回给定的分组条件的数据即可(因为使用者明确提供了所需的分组条件的值)。但如果查询过程中,发现当前不宜创建加速记录(由于并发的变更操作),则将不必再对所有分组进行数据处理。
在一实施例中,所述建立加速记录的流程还包括:
若取出的记录的类型为一般记录,则判断所述一般记录的插入时间与当前查询的查询时间的差值是否超过阈值,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录。
由于对流水表等数据表的汇总查询,经常与产生日报表相关,如果能以特定的时间插入加速记录,会有效的帮助日报表的产生。因此,即使不满足N的限制,当时间满足特定要求时,仍可能会需要产生加速记录。是否产生加速记录,取决于用户对此数据表的实际使用要求。类似于上述实施例,当记录的插入时间与查询时间超过了一定的时间时,也会分段产生加速记录。例如当系统自动于每日0点产生报表时,将T(阈值)固定设置为24小时,可同时产生历史上每日0点的加速记录。这种设定,通常适用于固定时间产生报表时使用。
在一实施例中,若抽取出的记录的类型为一般记录,则判断所述一般记录的插入时间与查询时间的差值是否超过阈值,若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录。
也就是说,若抽取出的记录的类型为一般记录,即使其不是第N+1条记录,也可以判断所述一般记录的插入时间与查询时间的差值是否超过阈值,如果是的话,需要按上述实施例一样建立加速记录。
实施例1
有记录表如下:
设查询过滤条件:过滤条件1=1,过滤条件2=1。
则记录2因为不符合条件而不参与计算。
根据分组条件,得出的汇总值结果应为:
分组条件1 | 分组条件2 | 结果 |
1 | 2 | 5 |
2 | 1 | 2 |
上表由于分组条件组合超过一个,因此会被作为从表数据记录在“加速数据表”中。而“记录表”中则会记录一条“加速记录”作为主记录,并通过ID与上表中的记录关联,形成主从关系。
实施例2
设置好记录表后,根据过滤条件与插入时间条件过滤后,得出如下的情况:
由于首条记录即为加速记录,所以在首次抽取记录后,即可直接返回其中包含的值即可,当然如果查询时是按照全部分组的方式查询,则可以返回加速记录中全部分组的结果,如果查询时是按照单一分组的方式查询,则可以返回加速记录中单一分组的结果。
实施例3
设置好记录表后,根据过滤条件与插入时间条件过滤后,得出如下的情况:
当N取值不小于3时,系统在N+1条记录内已经找到了加速记录。因此将前4条记录汇总,即为查询结果。
实施例4
设置好记录表后,根据过滤条件与插入时间条件过滤后,得出如下的情况:
设N=10。
查询处理到第11(N+1)条记录仍未发现加速记录,因此倾向于以当前传入的查询时间(必然不会早于10:00:00)建立一条加速记录。由于同样情况下系统规定加速记录的排序位于普通记录之前,因此此记录的位置必然处于原记录1之前,且与原1记录之间不会存在同过滤条件的其他记录。特别的,如果查询处理过程中,发现即将发生有同过滤条件记录,且时间早于查询时间的记录变更或插入,则不会创建加速记录。
如果按上述方式,则汇总过程会一直执行到记录结束,或遇到一条加速记录为止,将汇总记录保存在新增的加速记录内,并返回汇总结果。
但如此,假如后续另有一个查询,使用同样过滤条件的,但查询时间为9:40:00,则仍需对第12条起的所有记录再执行一次类似的汇总。由此引入了分段递归查询的优化。
即,当处理到第11(N+1)条记录仍未发现加速记录时,暂停对后续记录的处理,而是再发起一次同类查询(子查询),以同样的过滤条件,并以第11(N+1)条记录的插入时间为查询时间。将子查询返回的结果,与前N条记录的结果汇总后,写入加速记录并返回。子查询进行的过程中,同样会执行上述的流程。因此总体结果将变为每隔N条插入了一条加速记录。这个分段汇总的过程并没有增加对数据读取的次数,但会产生更多的加速记录。这些加速记录将会有效的对后续的同过滤条件且查询时间较早的查询提供帮助。
请参阅图2,图2为本发明实施例提供的一种数据表快速汇总装置的示意性框图,该数据表快速汇总装置200可以包括:
记录处理单元201,用于当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
记录抽取单元202,用于从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
第一记录汇总单元203,用于若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
第二记录汇总单元204,用于若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据表快速汇总方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如上所述的数据表快速汇总方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、机械硬盘、固态硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种数据表快速汇总方法,其特征在于,包括:
当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回;
所述根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回,包括:
取出数据表中距离当前查询的查询时间最近且不晚于当前查询的查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录;
若取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
2.根据权利要求1所述的数据表快速汇总方法,其特征在于,还包括:
当检测到对数据表中的记录进行变更操作的指令时,预先在编辑状态表中声明变更操作的范围。
3.根据权利要求2所述的数据表快速汇总方法,其特征在于,所述建立加速记录的流程还包括:
定期检测编辑状态表中是否有属于待汇总范围的声明,若无则以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回;若有则不建立加速记录,并将汇总结果返回。
4.根据权利要求3所述的数据表快速汇总方法,其特征在于,还包括:
根据查询指令对待汇总范围内的记录进行锁定,控制禁止对待汇总范围内的记录进行变更。
5.根据权利要求1所述的数据表快速汇总方法,其特征在于,所述建立加速记录的流程还包括:
若取出的记录的类型为一般记录,则判断所述一般记录的插入时间与当前查询的查询时间的差值是否超过阈值,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录。
6.根据权利要求1所述的数据表快速汇总方法,其特征在于,还包括:
若抽取出的记录的类型为一般记录,则判断所述一般记录的插入时间与查询时间的差值是否超过阈值,若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录。
7.一种数据表快速汇总装置,其特征在于,包括:
记录处理单元,用于当接收到查询指令时,取出数据表中距离查询时间最近且不晚于所述查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
记录抽取单元,用于从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
第一记录汇总单元,用于若抽取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录:若是,则以查询时间、过滤条件字段为条件,执行建立加速记录的流程;若否,则将所述一般记录按照分组条件字段进行分组,并与同类记录的值求和,然后继续抽取下一条记录;
第二记录汇总单元,用于若抽取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,然后将求和结果返回;
其中,所述建立加速记录的流程包括:根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回;
所述根据数据表中各记录的插入时间逐条汇总各条记录的值,直至汇总到加速记录或者汇总完所有记录,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回,包括:
取出数据表中距离当前查询的查询时间最近且不晚于当前查询的查询时间的N+1条记录,并根据插入时间对所述N+1条记录进行降序处理;
从前至后逐条抽取所述N+1条记录中的每一条记录,并获取抽取出的记录的类型;
若取出的记录的类型为一般记录,则判断所述一般记录是否为第N+1条记录,若是则以所述一般记录的插入时间为子查询的查询时间、过滤条件字段为子查询的条件,再次执行建立加速记录的流程并得到子查询的汇总结果,将所述子查询的汇总结果与前N条记录的结果进行汇总得到总汇总结果,以当前查询的查询时间在数据表中建立一条包含总汇总结果的加速记录,并将总汇总结果返回;若否则将对应记录按照分组条件字段进行分组,并与同类记录的值求和,然后返回继续抽取下一条记录;
若取出的记录的类型为加速记录,则将所述加速记录中的每条子记录按照分组条件字段进行分组,并与同类记录的值求和,以查询时间在数据表中建立一条包含汇总结果的加速记录,并将汇总结果返回。
8.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的数据表快速汇总方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至6任一项所述的数据表快速汇总方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010270608.1A CN111459946B (zh) | 2020-04-08 | 2020-04-08 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010270608.1A CN111459946B (zh) | 2020-04-08 | 2020-04-08 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459946A CN111459946A (zh) | 2020-07-28 |
CN111459946B true CN111459946B (zh) | 2023-03-21 |
Family
ID=71680450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010270608.1A Active CN111459946B (zh) | 2020-04-08 | 2020-04-08 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459946B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559641B (zh) * | 2020-12-07 | 2024-02-06 | 泰康保险集团股份有限公司 | 拉链表的处理方法及装置、可读存储介质、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101676899A (zh) * | 2008-09-18 | 2010-03-24 | 上海宝信软件股份有限公司 | 海量数据库记录的归档和查询方法 |
CN103631967A (zh) * | 2013-12-18 | 2014-03-12 | 北京华环电子股份有限公司 | 一种带自增量标识字段的数据表的处理方法及装置 |
CN104182405A (zh) * | 2013-05-22 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种连接查询方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732143B2 (en) * | 2010-08-27 | 2014-05-20 | Microsoft Corporation | Reducing locking during database transactions |
-
2020
- 2020-04-08 CN CN202010270608.1A patent/CN111459946B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101676899A (zh) * | 2008-09-18 | 2010-03-24 | 上海宝信软件股份有限公司 | 海量数据库记录的归档和查询方法 |
CN104182405A (zh) * | 2013-05-22 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种连接查询方法及装置 |
CN103631967A (zh) * | 2013-12-18 | 2014-03-12 | 北京华环电子股份有限公司 | 一种带自增量标识字段的数据表的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111459946A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959400B (zh) | 银行系统历史数据清理方法及装置 | |
US20160034522A1 (en) | Aggregating data in a mediation system | |
CN105989163A (zh) | 数据实时处理方法及系统 | |
CN101087203A (zh) | 一种海量数据统计方法 | |
CN111459946B (zh) | 一种数据表快速汇总方法、装置、计算机设备及存储介质 | |
CN109544344B (zh) | 基于dag的区块链的交易处理方法及设备 | |
CN111078499A (zh) | 一种基于flink的微服务性能实时监控方法 | |
CN102262636B (zh) | 生成数据库分区执行计划的方法及装置 | |
CN101431760B (zh) | 业务报表实现方法及系统 | |
CN109725852B (zh) | 一种限流计数的优化方法及终端 | |
CN111461617B (zh) | 一种库存统计方法、装置、计算机设备及存储介质 | |
WO2020020170A1 (zh) | 数据删除方法和装置 | |
CN111401874A (zh) | 一种自助交易系统监控方法及装置 | |
CN106599326B (zh) | 一种云化架构下的记录数据剔重处理方法及系统 | |
CN114722045A (zh) | 时间序列数据的存储方法及装置 | |
CN112860680B (zh) | 数据处理方法及系统、数据查询方法及系统 | |
CN101799803B (zh) | 信息处理方法、模块及系统 | |
CN110502370B (zh) | 一种自动清理备份对象的方法 | |
CN108874325B (zh) | 数据打印方法及系统 | |
CN110597572B (zh) | 一种服务调用关系分析方法和计算机系统 | |
CN105868197B (zh) | 一种话单数据的统计方法及统计装置 | |
CN117555968B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN109783580A (zh) | 数据同步方法及装置 | |
CN112307007B (zh) | 数据库清理方法及装置 | |
CN116433379A (zh) | 交易信息处理方法及装置 |
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 |