数据库查询任务的执行方法和装置制造方法

文档序号:6638714阅读:118来源:国知局
数据库查询任务的执行方法和装置制造方法
【专利摘要】本发明公开了一种数据库查询任务的执行方法和装置。其中,该执行方法包括:接收待执行的查询任务;从编号队列中提取查询任务的编号,并将编号从编号队列中删除,其中,编号为编号队列的首位编号;按照编号执行查询任务;在执行完成查询任务之后,将编号保存至编号队列。通过本发明,解决了现有技术中生成的唯一编号时出现重复编号的问题,实现了为查询任务分配不同编号,以确保服务器可以准确识别各个查询任务的执行顺序的效果。
【专利说明】数据库查询任务的执行方法和装置

【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种数据库查询任务的执行方法和装置。

【背景技术】
[0002]在很多情况下需要生成唯一编号,以便唯一标识一个对象,例如,一台用于处理某一种用户请求(如,数据查询请求)的服务器,需要对当前接收到的数据查询任务进行唯一的标识,以便于检索当前用户请求的状态或结果。
[0003]现有技术中,生成数据库查询任务的编号主要有以下两种方案:
[0004]1、使用生成⑶ID作为唯一标识查询任务的编号。使用随机生成的DUID作为查询任务的编号,每一个编号需要占用至少16个字节,在需要较多编号时,占用的存储空间较大,无法应用于存储空间有限的场景。
[0005]2、使用自增数字的方式生成唯一标识查询任务的编号。使用自增数字的方法生成编号时,存在出现重复编号的可能。例如,编号的数字的范围为O至N,则在编号使用第N+1次后可能会出现重复的编号,如,将服务器接收到的第N+1次用户请求编号为0,并且在此之后服务器又接收到了 20个用户请求(依次编号为I至20),若前N次接收到的用户请求中只执行了 19个,那么在服务器接收到的用户请求中,就会同时存在编号为20用户请求,造成服务器在执行用户请求时出现异常。
[0006]上述的GUID为Globally Unique Identifier,即全局唯一标识符,是一种由算法生成的二进制长度为128位的数字标识符。
[0007]针对现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题,目前尚未提出有效的解决方案。


【发明内容】

[0008]本发明的主要目的在于提供一种数据库查询任务的执行方法和装置,以解决现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题。
[0009]为了实现上述目的,根据本发明的一个方面,提供了一种数据库查询任务的执行方法。
[0010]根据本发明的执行方法包括:接收待执行的查询任务;从编号队列中提取查询任务的编号,并将编号从编号队列中删除,其中,编号为编号队列的首位编号;按照编号执行查询任务;在执行完成查询任务之后,将编号保存至编号队列。
[0011]进一步地,在从编号队列中提取查询任务的编号之前,执行方法还包括:判断编号队列是否为空;若编号队列为空,获取编号队列的当前队列编号,其中,当前队列编号为生成的编号队列的第一最大编号;生成第一预设个数的编号;将编号保存至编号队列。
[0012]进一步地,在生成第一预设个数的编号之后,执行方法包括:获取生成的第一预设个数的编号中的第二最大编号;使用第二最大编号设置当前队列编号的值。
[0013]进一步地,在从编号队列中提取查询任务的编号之前,执行方法还包括:创建用于存储编号的编号队列。
[0014]进一步地,在创建用于存储编号的编号队列之后,执行方法还包括:使用自增数字的方法从最小自然数开始生成第二预设个数的编号;生成第一预设个数的编号包括:使用自增数字的方法从当前队列编号开始生成第一预设个数的编号。
[0015]为了实现上述目的,根据本发明的另一方面,提供了一种数据库查询任务的执行
目.ο
[0016]根据本发明的执行装置包括:接收模块,用于接收待执行的查询任务;提取模块,用于从编号队列中提取查询任务的编号,并将编号从编号队列中删除,其中,编号为编号队列的首位编号;执行模块,用于按照编号执行查询任务;第一保存模块,用于在执行完成查询任务之后,将编号保存至编号队列。
[0017]进一步地,执行装置还包括:判断模块,用于在从编号队列中提取查询任务的编号之前,判断编号队列是否为空;第一获取模块,用于在编号队列为空的情况下,获取编号队列的当前队列编号,其中,当前队列编号为生成的编号队列的第一最大编号;第一生成模块,用于生成第一预设个数的编号;第二保存模块,用于将编号保存至编号队列。
[0018]进一步地,执行装置包括:第二获取模块,用于在生成第一预设个数的编号之后,获取生成的第一预设个数的编号中的第二最大编号;设置模块,用于使用第二最大编号设置当前队列编号的值。
[0019]进一步地,执行装置还包括:创建模块,用于在从编号队列中提取查询任务的编号之前,创建用于存储编号的编号队列。
[0020]进一步地,执行装置还包括:第二生成模块,用于在创建用于存储编号的编号队列之后,使用自增数字的方法从最小自然数开始生成第二预设个数的编号;第一生成模块包括:生成子模块,用于使用自增数字的方法从当前队列编号开始生成第一预设个数的编号。
[0021]采用本发明实施例,在接收到待执行的查询任务之后,提取编号队列中的首位编号,将该编号分配给查询任务并从编号队列中删除,在按照编号执行完成查询任务之后,将该查询任务对应的编号保存至编号队列中。在上述实施例中,将分配给查询任务的编号从编号队列中删除,可以确保各个待执行的查询任务在从编号队列中获取的编号不重复,避免了现有技术中查询任务的编号出现重复的问题。通过本发明实施例,解决了现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题,实现了为查询任务分配不同编号,以确保服务器可以准确识别各个查询任务的执行顺序的效果O

【专利附图】

【附图说明】
[0022]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0023]图1是根据本发明实施例的数据库查询任务的执行方法的流程图;
[0024]图2是根据本发明实施例的一种可选的数据库查询任务的编号的生成方法的流程图;以及
[0025]图3是根据本发明实施例的数据库查询任务的执行装置的示意图。

【具体实施方式】
[0026]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0027]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0028]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0029]图1是根据本发明实施例的数据库查询任务的执行方法的流程图,如图1所示,该执行方法可以包括如下的步骤S102至步骤S108:
[0030]步骤S102,接收待执行的查询任务。
[0031]步骤S104,从编号队列中提取查询任务的编号,并将编号从编号队列中删除。
[0032]其中,编号为编号队列的首位编号。
[0033]步骤S106,按照编号执行查询任务。
[0034]步骤S108,在执行完成查询任务之后,将编号保存至编号队列。
[0035]采用本发明实施例,在接收到待执行的查询任务之后,提取编号队列中的首位编号,将该编号分配给查询任务并从编号队列中删除,在按照编号执行完成查询任务之后,将该查询任务对应的编号保存至编号队列中。在上述实施例中,将分配给查询任务的编号从编号队列中删除,可以确保各个待执行的查询任务在从编号队列中获取的编号不重复,避免了现有技术中查询任务的编号出现重复的问题。通过本发明实施例,解决了现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题,实现了为查询任务分配不同编号,以确保服务器可以准确识别各个查询任务的执行顺序的效果O
[0036]在本发明的上述实施例中,在执行完成查询任务之后,将该查询任务的编号归还给编号队列,并将归还的编号保存在编号队列的队尾,归还的编号与编号队列中已保存的编号不重复。通过本发明实施例,将不被占用的编号重新作为可用的编号存储在编号队列中,可以使得编号得到充分的利用。
[0037]根据本发明上述实施例,在从编号队列中提取查询任务的编号之前,执行方法还可以包括:判断编号队列是否为空;若编号队列为空,获取编号队列的当前队列编号,其中,当前队列编号为生成的编号队列的第一最大编号;生成第一预设个数的编号;将编号保存至编号队列。
[0038]具体地,在从编号队列中提取查询任务的编号之前,判断编号队列是否为空,即判断编号队列中是否存在可用的编号,在编号队列为空(即编号队列中没有可用的编号)时,获取编号队列中已经生成的编号中的最大编号作为当前队列编号,生成第一预设个数的编号,并将生成的编号依序保存至编号队列;若编号队列不为空(即编号队列中存在可用的编号),从编号队列中提取首位编号,将该首位编号分配给待执行的查询任务并将该首位编号从编号队列中删除。
[0039]上述实施例中的编号可以为整数,也可以为占用存储空间更小的短整型格式的变量或字节等。
[0040]在本发明上述实施例中,在编号队列有可用的编号时,将编号队列的首位编号分配给查询任务并将该首位编号从编号队列中删除;在编号队列中没有可用的编号时,在已经生成的编号中的最大编号的基础上,生成新的编号,以供查询任务使用。通过本发明上述实施例,在编号队列中没有可用编号的情况下生成新的编号,避免了现有技术中生成数量较多的编号时编号占用较大存储空间的问题,减小了存储编号所需的存储空间。
[0041]进一步地,生成第一预设个数的编号可以包括:使用自增数字的方法从当前队列编号开始生成第一预设个数的编号。
[0042]具体地,从当前队列编号开始,使用自增数字的方法依次生成第一预设个数的新的编号,即新生成的第一个编号比当前队列编号大1,后续依次生成的各个编号均比前一个编号大I。
[0043]在本发明的上述实施例中,在生成第一预设个数的编号之后,执行方法可以包括:获取生成的第一预设个数的编号中的第二最大编号;使用第二最大编号设置当前队列编号的值。
[0044]具体地,在生成第一预设个数的编号之后,获取生成的编号中的最大编号,并将该编号的值作为当前队列编号的值,以更新当前队列编号,便于在下一次编号队列中没有可用编号时生成的新编号与编号队列已经生成的各个编号均不重复。
[0045]根据本发明上述实施例,在从编号队列中提取查询任务的编号之前,执行方法还可以包括:创建用于存储编号的编号队列。
[0046]进一步地,在创建用于存储编号的编号队列之后,执行方法还可以包括:使用自增数字的方法从最小自然数开始生成第二预设个数的编号。
[0047]具体地,创建用于存储编号的空的编号队列,并使用自增数字的方法从最小自然数(即O)开始,依序生成第二预设个数的编号,并将生成的第二预设个数的编号存储在编号队列中。
[0048]图2是根据本发明实施例的一种可选的数据库查询任务的编号的生成方法的流程图,下面结合图2详细介绍本发明上述实施例。
[0049]如图2所示,该生成方法可以包括如下步骤:
[0050]步骤S202,接收到用于获取编号的获取请求。
[0051]步骤S204,检测编号队列是否为空。
[0052]具体地,在从编号队列中提取查询任务的编号之前,检测编号队列中是否为空,即检测编号队列中是否有可用的编号,若编号队列中保存的所有编号已经被其他查询任务使用,那么编号队列中没有可用的编号,在编号队列为空的情况下,执行步骤S206 ;在编号队列不为空的情况下,执行步骤S212。
[0053]步骤S206,获取当前队列编号。
[0054]具体地,当前队列编号是编号队列生成的编号中的最大编号,记为max_id ;在创建编号队列且编号队列中尚未保存编号时,max_id为O;在创建编号队列之后,使用自增数字的方法从I开始生成第一预设个数的编号并将编号保存至编号队列中,此时,当前队列编号(即max_id)应修改为第一预设个数的数值。
[0055]步骤S208,生成第二预设个数的编号,并将编号保存至编号队列的队尾。
[0056]具体地,使用自增数字的方法从max_id的数值开始生成第二预设个数(记为count)的可用编号,并将生成的编号依对应的数值大小依次保存至编号队列的队尾。
[0057]步骤S210,修改当前队列编号并保存修改后的当前队列编号。
[0058]具体地,使用获取到的当前队列编号重新设定当前队列编号,即将步骤S204中获取到的max_id的数值与步骤S206中的count的数值之和保存为新的max_id0
[0059]进一步地,可以按照修改公式修改当前队列编号,其中,修改公式为:max_id =max_id+counto
[0060]步骤S212,获取排在编号队列的队首的编号,并将该编号从编号队列中移除。
[0061]步骤S214,输出获取到的编号。
[0062]具体地,读取排在编号队列的队首的编号,将该编号分配给请求获取编号的查询任务,并将该编号从编号队列中删除。
[0063]通过本发明上述实施例,使用自增数字方法生成编号并将编号保存在编号队列中,在查询任务从编号队列中获取编号时,将排在编号队列的队首的编号分配至查询任务,并将该编号从编号队列中删除;在编号队列中没有可用编号时,在已生成的编号的基础上继续生成新的编号,可以使查询任务获取到的编号不重复。
[0064]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0065]图3是根据本发明实施例的数据库查询任务的执行装置的示意图,如图3所示,该执行装置可以包括:接收模块10,用于接收待执行的查询任务;提取模块30,用于从编号队列中提取查询任务的编号,并将编号从编号队列中删除,其中,编号为编号队列的首位编号;执行模块50,用于按照编号执行查询任务;第一保存模块70,用于在执行完成查询任务之后,将编号保存至编号队列。
[0066]采用本发明实施例,在接收到待执行的查询任务之后,提取编号队列中的首位编号,将该编号分配给查询任务并从编号队列中删除,在按照编号执行完成查询任务之后,将该查询任务对应的编号保存至编号队列中。在上述实施例中,将分配给查询任务的编号从编号队列中删除,可以确保各个待执行的查询任务在从编号队列中获取的编号不重复,避免了现有技术中查询任务的编号出现重复的问题。通过本发明实施例,解决了现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题,实现了为查询任务分配不同编号,编号无重复,以确保服务器可以准确识别各个查询任务的执行顺序的效果。
[0067]在本发明的上述实施例中,在执行完成查询任务之后,将该查询任务的编号归还给编号队列,并将归还的编号保存在编号队列的队尾,归还的编号与编号队列中已保存的编号不重复。通过本发明实施例,将不被占用的编号重新作为可用的编号存储在编号队列中,可以使得编号得到充分的利用。
[0068]根据本发明上述实施例,执行装置还可以包括:判断模块,用于在从编号队列中提取查询任务的编号之前,判断编号队列是否为空;第一获取模块,用于在编号队列为空的情况下,获取编号队列的当前队列编号,其中,当前队列编号为生成的编号队列的第一最大编号;第一生成模块,用于生成第一预设个数的编号;第二保存模块,用于将编号保存至编号队列。
[0069]具体地,在从编号队列中提取查询任务的编号之前,判断编号队列是否为空,即判断编号队列中是否存在可用的编号,在编号队列为空(即编号队列中没有可用的编号)时,获取编号队列中已经生成的编号中的最大编号作为当前队列编号,生成第一预设个数的编号,并将生成的编号依序保存至编号队列;若编号队列不为空(即编号队列中存在可用的编号),从编号队列中提取首位编号,将该首位编号分配给待执行的查询任务并将该首位编号从编号队列中删除。
[0070]上述实施例中的编号可以为整数,也可以为占用存储空间更小的短整型格式的变量或字节等。
[0071]在本发明上述实施例中,在编号队列有可用的编号时,将编号队列的首位编号分配给查询任务并将该首位编号从编号队列中删除;在编号队列中没有可用的编号时,在已经生成的编号中的最大编号的基础上,生成新的编号,以供查询任务使用。通过本发明上述实施例,在编号队列中没有可用编号的情况下生成新的编号,避免了现有技术中生成数量较多的编号时编号占用较大存储空间的问题,减小了存储编号所需的存储空间。
[0072]进一步地,第一生成模块可以包括:生成子模块,用于使用自增数字的方法从当前队列编号开始生成第一预设个数的编号。
[0073]具体地,从当前队列编号开始,使用自增数字的方法依次生成第一预设个数的新的编号,即新生成的第一个编号比当前队列编号大1,后续依次生成的各个编号均比前一个编号大I。
[0074]在本发明的上述实施例中,执行装置可以包括:第二获取模块,用于在生成第一预设个数的编号之后,获取生成的第一预设个数的编号中的第二最大编号;设置模块,用于使用第二最大编号设置当前队列编号的值。
[0075]具体地,在生成第一预设个数的编号之后,获取生成的编号中的最大编号,并将该编号的值作为当前队列编号的值,以更新当前队列编号,便于在下一次编号队列中没有可用编号时生成的新编号与编号队列已经生成的各个编号均不重复。
[0076]根据本发明上述实施例,执行装置还可以包括:创建模块,用于在从编号队列中提取查询任务的编号之前,创建用于存储编号的编号队列。
[0077]进一步地,执行装置还可以包括:第二生成模块,用于在创建用于存储编号的编号队列之后,使用自增数字的方法从最小自然数开始生成第二预设个数的编号;
[0078]具体地,创建用于存储编号的空的编号队列,并使用自增数字的方法从最小自然数(即O)开始,依序生成第二预设个数的编号,并将生成的第二预设个数的编号存储在编号队列中。
[0079]本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
[0080]从以上的描述中,可以看出,本发明实现了如下技术效果:
[0081]采用本发明实施例,在接收到待执行的查询任务之后,提取编号队列中的首位编号,将该编号分配给查询任务并从编号队列中删除,在按照编号执行完成查询任务之后,将该查询任务对应的编号保存至编号队列中。在上述实施例中,将分配给查询任务的编号从编号队列中删除,可以确保各个待执行的查询任务在从编号队列中获取的编号不重复,避免了现有技术中查询任务的编号出现重复的问题。通过本发明实施例,解决了现有技术中数据库查询任务的任务编号出现重复,导致无法准确确定执行查询任务的顺序的问题,实现了为查询任务分配不同编号,以确保服务器可以准确识别各个查询任务的执行顺序的效果O
[0082]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0083]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据库查询任务的执行方法,其特征在于,包括: 接收待执行的查询任务; 从编号队列中提取所述查询任务的编号,并将所述编号从所述编号队列中删除,其中,所述编号为所述编号队列的首位编号; 按照所述编号执行所述查询任务; 在执行完成所述查询任务之后,将所述编号保存至所述编号队列。
2.根据权利要求1所述的执行方法,其特征在于,在从编号队列中提取所述查询任务的编号之前,所述执行方法还包括: 判断所述编号队列是否为空; 若所述编号队列为空,获取所述编号队列的当前队列编号,其中,所述当前队列编号为生成的所述编号队列的第一最大编号; 生成第一预设个数的所述编号; 将所述编号保存至所述编号队列。
3.根据权利要求2所述的执行方法,其特征在于,在生成第一预设个数的所述编号之后,所述执行方法包括: 获取所述生成的所述第一预设个数的所述编号中的第二最大编号; 使用所述第二最大编号设置所述当前队列编号的值。
4.根据权利要求2或3所述的执行方法,其特征在于,在从编号队列中提取所述查询任务的编号之前,所述执行方法还包括: 创建用于存储所述编号的所述编号队列。
5.根据权利要求4所述的执行方法,其特征在于, 在创建用于存储所述编号的所述编号队列之后,所述执行方法还包括:使用自增数字的方法从最小自然数开始生成第二预设个数的所述编号; 生成第一预设个数的所述编号包括:使用自增数字的方法从所述当前队列编号开始生成所述第一预设个数的所述编号。
6.一种数据库查询任务的执行装置,其特征在于,包括: 接收模块,用于接收待执行的查询任务; 提取模块,用于从编号队列中提取所述查询任务的编号,并将所述编号从所述编号队列中删除,其中,所述编号为所述编号队列的首位编号; 执行模块,用于按照所述编号执行所述查询任务; 第一保存模块,用于在执行完成所述查询任务之后,将所述编号保存至所述编号队列。
7.根据权利要求6所述的执行装置,其特征在于,所述执行装置还包括: 判断模块,用于在从编号队列中提取所述查询任务的编号之前,判断所述编号队列是否为空; 第一获取模块,用于在所述编号队列为空的情况下,获取所述编号队列的当前队列编号,其中,所述当前队列编号为生成的所述编号队列的第一最大编号; 第一生成模块,用于生成第一预设个数的所述编号; 第二保存模块,用于将所述编号保存至所述编号队列。
8.根据权利要求7所述的执行装置,其特征在于,所述执行装置包括: 第二获取模块,用于在生成第一预设个数的所述编号之后,获取所述生成的所述第一预设个数的所述编号中的第二最大编号; 设置模块,用于使用所述第二最大编号设置所述当前队列编号的值。
9.根据权利要求7或8所述的执行装置,其特征在于,所述执行装置还包括: 创建模块,用于在从编号队列中提取所述查询任务的编号之前,创建用于存储所述编号的所述编号队列。
10.根据权利要求9所述的执行装置,其特征在于, 所述执行装置还包括:第二生成模块,用于在创建用于存储所述编号的所述编号队列之后,使用自增数字的方法从最小自然数开始生成第二预设个数的所述编号; 所述第一生成模块包括:生成子模块,用于使用自增数字的方法从所述当前队列编号开始生成所述第一预设个数的所述编号。
【文档编号】G06F17/30GK104462428SQ201410773935
【公开日】2015年3月25日 申请日期:2014年12月12日 优先权日:2014年12月12日
【发明者】陈国兴 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1