CN105468644B - 一种用于在数据库中进行查询的方法与设备 - Google Patents
一种用于在数据库中进行查询的方法与设备 Download PDFInfo
- Publication number
- CN105468644B CN105468644B CN201410457620.8A CN201410457620A CN105468644B CN 105468644 B CN105468644 B CN 105468644B CN 201410457620 A CN201410457620 A CN 201410457620A CN 105468644 B CN105468644 B CN 105468644B
- Authority
- CN
- China
- Prior art keywords
- page
- record
- information
- query information
- sublist
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请的目的是提供一种用于在数据库中进行查询的方法与设备;获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。与现有技术相比,本申请通过获得请求页所对应的页记录位置信息,进而快速读取对应各表上的相应数据库记录,避免了联合查询各表数据带来的资源耗费;同时,将所述查询信息与对应的所述页记录位置信息进行缓存,进一步提高了数据库操作的效率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种用于在数据库中进行查询的技术。
背景技术
在对数据库进行操作时,若数据库一张表中的数据量过大,执行操作率将会降低,若是将一张表划分成若干个子表,则对数据库进行执行操作时的压力将会分摊降低。
目前,该领域采用的方案为:利用数据库技术联合查询所述若干个子表:首先通过联合查询获得满足查条件的多个子表中的记录数的总和;然后利用数据库技术,分页及排序查询出满足查询条件的数据记录。但是当每一张子表的数据量依然很大时,多表联合查询将长时间占用数据库连接,造成其他线程的等待,从而极大消耗了数据库资源,严重影响到对数据库的执行操作和数据库的性能。
发明内容
本申请的目的是提供一种用于在数据库中进行查询的方法与设备。
根据本申请的一个方面,提供了一种用于在数据库中进行查询的方法,包括:
获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;
确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;
根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;
根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。
根据本申请的另一方面,还提供了一种用于在数据库中进行查询的设备,包括:
第一装置,用于获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;
第二装置,用于确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;
第三装置,用于根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;
第四装置,用于根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。
与现有技术相比,本申请通过获得请求页所对应的页记录位置信息,进而通过所述页记录位置信息快速读取对应各表上的相应数据库记录,避免了联合查询各表数据带来的大量数据的数据库操作的时间耗费和资源耗费;同时,将所述查询信息与对应的所述页记录位置信息进行缓存,当对所述数据库再次进行相同操作时,可以直接通过缓存数据快速读取相应数据库记录,进一步提高了数据库操作的效率,从而优化了数据库性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于在数据库中进行查询的设备示意图;
图2示出根据本申请另一个方面的一种用于在数据库中进行查询的方法流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面的一种用于在数据库中进行查询的设备示意图。所述用于在数据库中进行查询的设备1包括第一装置101、第二装置102、第三装置103和第四装置104.
其中,第一装置101获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;第二装置确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;第三装置根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;第四装置根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。
具体地,用于在数据库中进行查询的设备1的第一装置101获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息。其中,所述查询条件,如多个子表的选择条件、所述分页查询的请求页序号,例如,按照条件A划分数据库中一张表,则对于条件A某一范围内的表进行查询就属于所述查询条件;又如,所述查询条件还包括设定的请求页的序号,如第3请求页序号。
在此,依据所述第一查询信息中的部分条件,如多个子表的选择条件等分表查询出每张子表上满足相应条件的查询记录,并获得对应的记录数。例如,所述各个子表为t201301,t201302,t201303,t201304,t201305……多张月表,所述第一查询信息为:创建时间在2013.01.08-2013.04.08之间;年龄大于50;第三页;页记录10。根据时间范围可计算出要查询t_201301,t_201302,t_201303,t_201304四张子表,这时分表查询出每张子表中条件为年龄大于50的记录数,
本领域技术人员应能理解,上述所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息仅为举例,其他进行查询的第一查询信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,用于在数据库中进行查询的设备1的第二装置102确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。通过所述请求页所对应的页记录位置信息可以确定所述第一查询信息对应的查询记录在数据库中的位置,从而基于所述查询记录在数据库中的位置便能够找到相应的查询记录。在此,根据所述第一查询信息,如,所述分页查询的请求页和所述请求页的记录数,可以确定页记录位置信息,如所述请求页中个查询记录在所述多个子表中的记录位置信息。
例如,所述第一查询信息包括所述分页查询的请求页为第3页,所述请求页的记录数为10个,则对于所述多个子表进行分表查询时,首先查询出每张子表的记录数,如,有3张要查询的子表,第1张子表上记录1至20条记录,第二张子表上记录21至40条记录,第三张子表上记录了41至70条记录,此时,依据所述分页查询的请求页为第3页,所述请求页的记录数为10个,可知第三页上的数据记录为表上21至30条记录,又通过每张子表的记录数可知,所述查询记录在第二章子表上,且位置在记录21至30处。因此,便获得了查询记录在所述多个子表中的记录位置信息,进一步则获得所述查询记录。
本领域技术人员应能理解,上述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息仅为举例,其他页记录位置信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,用于在数据库中进行查询的设备1的第三装置103根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页。根据确定的所述请求页对应的页记录位置信息,如所述请求页中各查询记录在所述多个子表中的记录位置信息,就可以在确定的一个或多个子表上的读取相应的查询信息,所述子表上的查询记录也就是所述请求页上对应的记录信息,通过查询可以确定或记录所述请求页中相应的记录信息,若在实际应用中有需要,可以方便调用所述请求页对应的相应记录信息。
接着,用于在数据库中进行查询的设备1的第四装置104根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。在此,所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息。通过所述第一查询信息可以获得一个相应的页记录位置信息,两者之间是一种映射关系,将第一查询信息与所述页记录位置信息相对应缓存起来,进而,当进行新的查询时,若所述新的查询的查询信息能够与所缓存中一定的查询信息相匹配,则依据所述所缓存的查询信息对应的缓存中所述页记录位置信息可以直接找到所述新的查询对应的查询记录,从而不需要通过新的查询的查询信息再次经过多表分页查询重新确定相应的页记录位置信息。
在此,本方案通过对所述各个子表进行分页,并基于所述请求页的相关信息,确定出所述查询请求所对应页记录位置信息,从而获得所诉查询记录,避免了联合查询各表数据带来的大量数据的数据库操作的时间耗费和资源耗费;同时,将所述查询信息与对应的所述页记录位置信息进行缓存,当对所述数据库再次进行相同操作时,可以直接通过相应查询信息的匹配在缓存中找到与所述查询记录对应的所述页记录位置信息,从而快速读取所述数据库的查询近路,进一步提高了数据库操作的效率,优化了数据库性能。
在一个优选的实施例中,所述于在数据库中进行查询的设备1还包括第五装置(未示出),所述第五装置根据所述第一查询信息在所述缓存中匹配查询,以确定所述缓存中是否包括与所述第一查询信息相匹配的第二查询信息;其中,所述第一装置用于当所述缓存中不包括所述第二查询信息,获取所述第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。
具体地,通过设备1的第四装置,将所述第一查询信息与对应的所述页记录位置信息更新入与数据库相应的缓存中,此时,缓存中的所述第一查询信息即为第二查询信息。当再次对所述数据库数据查询时,根据所述第一查询信息,判断在与数据库相对应的缓存中是否存在与所述第一查询信息相匹配的第二查询信息。当所述缓存中不包括与所述第一查询信息相匹配的所述第二查询信息时,则通过所述设备1的第一装置101,获得与所述第一查询信息对应的在由数据库中一表划分所得的多个子表中的查询记录。
更优选地,所述用于在数据库中进行查询的设备1还包括第六装置(未示出),所述第六装置当所述缓存中包括所述第二查询信息,根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录以生成所述请求页。
具体地,根据所述第一查询信息,当所述与数据库相对应的缓存中存在与所述第一查询信息相匹配的第二查询信息,则所述第一查询信息所包括的如,查询所述数据库中记录所对应的查询条件、所述多个子表的记录数信息、所述请求页的记录数信息等信息都与所述缓存中的确定的第二查询信息相匹配,同时,所述缓存中还存有与所述确定的第二查询信息相对应的页记录位置信息,进而,所述第一查询信息可以直接匹配与所述第二查询信息相对应的页记录位置信息,此时,通过所述第一查询信息查找的查询记录在表中的位置可以直接由缓存中所述页记录位置信息确定。进一步,所述由缓存中所述页记录位置信息确定的对应表上的查询记录也就是所述请求页上对应的记录信息,通过查询可以确定或记录所述请求页中相应的记录信息。
更优选地,在所述用于在数据库中进行查询的设备1中,所述第二查询信息与所述第一查询信息具有相同的查询关键词信息。当在所述缓存中找到与所述第一查询信息相匹配的第二查询信息时,所述匹配包括所述第一查询信息和所述第二查询信息具有相同的查询关键词信息。在此,所述第一查询信息和所述第二查询信息都包括查询所述数据库中记录所对应的查询条件、所述多个子表的记录数信息、所述请求页的记录数信息等信息。这些信息都是进行数据查询,确定查询记录的关键词信息,例如第一查询信息包括请求页为第n页,所述请求页的记录数为m个,则所述第二查询信息只有在同样满足包括请求页为第n页,所述请求页的记录数为m个的查询关键词信息时,才能够与所述第一查询信息匹配。
优选地,用于在数据库中进行查询的设备1中,当所述缓存中包括所述第二查询信息,所述第六装置根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录;根据所述对应记录,并结合所述第一查询信息所对应的页记录数信息,生成所述请求页。
具体地,当所述第一查询信息在所述缓存中找到与其具有相同查询关键词信息的第二查询信息,则基于所述第二查询信息所确定的页记录位置信息,如,通过所述请求页的记录数和所述分页查询的请求页确定的所述查询记录所在的子表及位置,就可以获得所述第一查询信息在相应子表中的查询记录。进一步,结合所述已查询信息所对应的页记录数信息,可以确定所述请求页。在此,所述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表的记录数等。例如,所述请求页的序号为第i页,所述请求页的记录数为j个,每张表的记录数为k(t),(t=1,2…)个,同时,所述请求页对应的查询记录为v1,v2…vn,(n不大于j),所述的诸多信息给出了所述请求页的一个较为全面的表述,若在实际应用中有需要,可以依据所述请求页的相关信息方便调用所述请求页对应的相应记录信息。
本领域技术人员应能理解,上述页记录数信息包括所述请求页的序号序号、所述请求页的记录数、每张表的记录数仅为举例,其他页记录数信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
优选地,所述用于在数据库中进行查询的设备1中,所述第一装置根据所述第一查询信息从由数据库中一表划分所得的多个子表中筛选优选子表,并根据所述第一查询信息在所述优选子表中查询获得查询记录。
具体地,当数据库中一张表中的数据量过大时,可以按照一定的规则,优选地,按照某种顺序进行分表,例如,按照时间区间对一张表进行划分,从而将原先一张表上的数据存储在了多个结果相同的多个子表上,进而,依据所给出的所述第一查询信息,从多个子表中筛选出符合查询条件的子表,作为接下来分页查询对应的查询子表。例如,按照年月对一张表中的数据进行划分,得到table201401、table201402、table201403、table201404四张子表,若所述第一查询信息中包含一查询条件为查询201401至201402时间内的数据信息,则从所述四张子表中优选出table201401和table201402两张符合第一查询信息的子表,进而,通过所述第一查询信息在所获得的优选出的子表中查询获得所述查询记录。
在此,本方案适用于很多领域大数据量分表分页查询的情况,例如论坛的帖子、博客微博的博文、订单系统的订单信息、交易系统的交易信息等数据信息的查询。
优选地,所述用于在数据库中进行查询的设备1中,所述第二装置根据对应请求页的页记录数信息确定所述请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
具体地,在此,所述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表的记录数等。通过所述请求页的序号和所述请求页的记录数可以确定所述请求页中满足条件的记录对应在表中的位置,如所述请求页的序号为x页,所述请求页的记录数为y个,则所述请求页中满足条件的记录在所述多个子表中第(x-1)y个记录至第xy个记录的位置,同时,结合所述每张表的记录数,便可以确定第(x-1)y个记录至第xy个记录在所述哪一个或多个子表上,即所述请求页对应的页记录位置信息,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
本领域技术人员应能理解,上述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表满足条件的记录数仅为举例,其他页记录数信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
优选地,所述用于在数据库中进行查询的设备1还用于检测是否满足触发条件;若满足所述触发条件,删除所述缓存中与所述触发条件相对应的映射关系。所述的触发条件包括对所述数据库进行一定的数据操作,当执行所述数据操作后,即所述触发条件满足,则数据库中原有的数据基于一定的数据操作而发生相应的改变,例如数据减少,此时触发条件所对应的表中的数据记录消失,则此数据记录为查询记录,并在缓存中存储的所述查询记录对应的所述第二查询信息以及所述页记录位置信息的存在就不再有意义,因此基于所满足的触发条件删除所述缓存中与所述触发条件对应的映射关系,从而及时清除缓存中的失效数据,释放相应缓存空间。
更优选地,在所述用于在数据库中进行查询的设备1中,所述触发条件包括以下至少任一项一是在所述子表中插入数据记录;二是在所述子表中删除数据记录;三是在所述子表中修改数据记录;四是删除所述子表。在此,所述触发条件包括对于子表或是子表中的数据进行一定的操作,触发条件的满足意味着与触发条件对应的子表中的数据发生变化,基于相应子表的数据信息缓存的数据相应失效。因此,确定触发条件所对应的子表,进而判断所述缓存中的各个缓存对象,如各个所述第二查询信息,以及与其对应的各个所述页记录位置信息中是否涉及到所述触发条件对应的表,若所述触发条件对应的表在某个所述缓存对象内,则将所述缓存对象清除。
本领域技术人员应能理解,上述触发条件仅为举例,其他触发条件如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
图2示出根据本申请另一个方面的一种用于在数据库中进行查询的方法流程图。
其中,在步骤S201中,所述设备1获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;在步骤S202中,所述设备1确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;在步骤S203中,所述设备1根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;在步骤S204中,所述设备1根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。
具体地,在步骤S201中,用于在数据库中进行查询的设备1获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息。其中,所述查询条件,如多个子表的选择条件、所述分页查询的请求页序号,例如,按照条件A划分数据库中一张表,则对于条件A某一范围内的表进行查询就属于所述查询条件;又如,所述查询条件还包括设定的请求页的序号,如第3请求页序号。
在此,依据所述第一查询信息中的部分条件,如多个子表的选择条件等,分表查询出每张子表上满足相应条件的查询记录,获得对应的记录数。例如,所述各个子表为t201301,t201302,t201303,t201304,t201305……多张月表,所述第一查询信息为:创建时间在2013.01.08-2013.04.08之间;年龄大于50;第三页;页记录10。根据时间范围可计算出要查询t_201301,t_201302,t_201303,t_201304四张子表,这时分表查询出每张子表中条件为年龄大于50的记录数,
本领域技术人员应能理解,上述所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息仅为举例,其他进行查询的第一查询信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,在步骤S202中,用于在数据库中进行查询的设备1确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。通过所述请求页所对应的页记录位置信息可以确定所述第一查询信息对应的查询记录在数据库中的位置,从而基于所述查询记录在数据库中的位置便能够找到相应的查询记录。在此,根据所述第一查询信息,如,所述分页查询的请求页和所述请求页的记录数,可以确定页记录位置信息,如所述请求页中个查询记录在所述多个子表中的记录位置信息。
例如,所述第一查询信息包括所述分页查询的请求页为第3页,所述请求页的记录数为10个,则对于所述多个子表进行分表查询时,首先查询出每张子表的记录数,如,有3张要查询的子表,第1张子表上记录1至20条记录,第二张子表上记录21至40条记录,第三张子表上记录了41至70条记录,此时,依据所述分页查询的请求页为第3页,所述请求页的记录数为10个,可知第三页上的数据记录为表上21至30条记录,又通过每张子表的记录数可知,所述查询记录在第二章子表上,且位置在记录21至30处。因此,便获得了查询记录在所述多个子表中的记录位置信息,进一步则获得所述查询记录。
本领域技术人员应能理解,上述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息仅为举例,其他页记录位置信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,在步骤S203中,用于在数据库中进行查询的设备1根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页。根据确定的所述请求页对应的页记录位置信息,如所述请求页中各查询记录在所述多个子表中的记录位置信息,就可以在确定的一个或多个子表上的读取相应的查询信息,所述子表上的查询记录也就是所述请求页上对应的记录信息,通过查询可以确定或记录所述请求页中相应的记录信息,若在实际应用中有需要,可以方便调用所述请求页对应的相应记录信息。
接着,在步骤S204中,用于在数据库中进行查询的设备1根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存。在此,所述第一查询信息包括查询所述数据库中记录所对应的查询条件,优选地还可包括所述请求页的序号和/或所述请求页的记录数信息。通过所述第一查询信息可以获得一个相应的页记录位置信息,两者之间是一种映射关系,将第一查询信息与所述页记录位置信息相对应缓存起来,进而,当进行新的查询时,若所述新的查询的查询信息能够与所缓存中一定的查询信息相匹配,则依据所述所缓存的查询信息对应的缓存中所述页记录位置信息可以直接找到所述新的查询对应的查询记录,从而不需要通过新的查询的查询信息再次经过多表分页查询重新确定相应的页记录位置信息。
在此,本方案通过对所述各个子表进行分页,并基于所述请求页的相关信息,确定出所述查询请求所对应页记录位置信息,从而获得所诉查询记录,避免了联合查询各表数据带来的大量数据的数据库操作的时间耗费和资源耗费;同时,将所述查询信息与对应的所述页记录位置信息进行缓存,当对所述数据库再次进行相同操作时,可以直接通过相应查询信息的匹配在缓存中找到与所述查询记录对应的所述页记录位置信息,从而快速读取所述数据库的查询近路,进一步提高了数据库操作的效率,优化了数据库性能。
在一个优选的实施例中,本方法还包括步骤S205(未示出),在步骤S205中,设备1根据所述第一查询信息在所述缓存中匹配查询,以确定所述缓存中是否包括与所述第一查询信息相匹配的第二查询信息;其中,在步骤S201中,当所述缓存中不包括所述第二查询信息,获取所述第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。
具体地,通过设备1将所述第一查询信息与对应的所述页记录位置信息更新入与数据库相应的缓存中,此时,缓存中的所述第一查询信息即为第二查询信息。当再次对所述数据库数据查询时,根据所述第一查询信息,判断在与数据库相对应的缓存中是否存在与所述第一查询信息相匹配的第二查询信息。当所述缓存中不包括与所述第一查询信息相匹配的所述第二查询信息时,则通过所述步骤S201,获得与所述第一查询信息对应的在由数据库中一表划分所得的多个子表中的查询记录。
更优选地,所述方法还包括步骤S206(未示出),在步骤S206中,当所述缓存中包括所述第二查询信息,根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录以生成所述请求页。
具体地,根据所述第一查询信息,当所述与数据库相对应的缓存中存在与所述第一查询信息相匹配的第二查询信息,则所述第一查询信息所包括的如,查询所述数据库中记录所对应的查询条件、所述多个子表的记录数信息、所述请求页的记录数信息等信息都与所述缓存中的确定的第二查询信息相匹配,同时,所述缓存中还存有与所述确定的第二查询信息相对应的页记录位置信息,进而,所述第一查询信息可以直接匹配与所述第二查询信息相对应的页记录位置信息,此时,通过所述第一查询信息查找的查询记录在表中的位置可以直接由缓存中所述页记录位置信息确定。进一步,所述由缓存中所述页记录位置信息确定的对应表上的查询记录也就是所述请求页上对应的记录信息,通过查询可以确定或记录所述请求页中相应的记录信息。
更优选地,所述方法中,所述第二查询信息与所述第一查询信息具有相同的查询关键词信息。当在所述缓存中找到与所述第一查询信息相匹配的第二查询信息时,所述匹配包括所述第一查询信息和所述第二查询信息具有相同的查询关键词信息。在此,所述第一查询信息和所述第二查询信息都包括查询所述数据库中记录所对应的查询条件、所述多个子表的记录数信息、所述请求页的记录数信息等信息。这些信息都是进行数据查询,确定查询记录的关键词信息,例如第一查询信息包括请求页为第n页,所述请求页的记录数为m个,则所述第二查询信息只有在同样满足包括请求页为第n页,所述请求页的记录数为m个的查询关键词信息时,才能够与所述第一查询信息匹配。
优选地,在步骤S206中,当所述缓存中包括所述第二查询信息,根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录;根据所述对应记录,并结合所述第一查询信息所对应的页记录数信息,生成所述请求页。
具体地,当所述第一查询信息在所述缓存中找到与其具有相同查询关键词信息的第二查询信息,则基于所述第二查询信息所确定的页记录位置信息,如,通过所述请求页的记录数和所述分页查询的请求页确定的所述查询记录所在的子表及位置,就可以获得所述第一查询信息在相应子表中的查询记录。进一步,结合所述已查询信息所对应的页记录数信息,可以确定所述请求页。在此,所述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表的记录数等。例如,所述请求页的序号为第i页,所述请求页的记录数为j个,每张表的记录数为k(t),(t=1,2…)个,同时,所述请求页对应的查询记录为v1,v2…vn,(n不大于j),所述的诸多信息给出了所述请求页的一个较为全面的表述,若在实际应用中有需要,可以依据所述请求页的相关信息方便调用所述请求页对应的相应记录信息。
本领域技术人员应能理解,上述页记录数信息包括所述请求页的序号序号、所述请求页的记录数、每张表的记录数仅为举例,其他页记录数信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
优选地,所述用方法中,所述设备1根据所述第一查询信息从由数据库中一表划分所得的多个子表中筛选优选子表,并根据所述第一查询信息在所述优选子表中查询获得查询记录。
具体地,当数据库中一张表中的数据量过大时,可以按照一定的规则,优选地,按照某种顺序进行分表,例如,按照时间区间对一张表进行划分,从而将原先一张表上的数据存储在了多个结果相同的多个子表上,进而,依据所给出的所述第一查询信息,从多个子表中筛选出符合查询条件的子表,作为接下来分页查询对应的查询子表。例如,按照年月对一张表中的数据进行划分,得到table201401、table201402、table201403、table201404四张子表,若所述第一查询信息中包含一查询条件为查询201401至201402时间内的数据信息,则从所述四张子表中优选出table201401和table201402两张符合第一查询信息的子表,进而,通过所述第一查询信息在所获得的优选出的子表中查询获得所述查询记录。
在此,本方案适用于很多领域大数据量分表分页查询的情况,例如论坛的帖子、博客微博的博文、订单系统的订单信息、交易系统的交易信息等数据信息的查询。
优选地,在步骤S202中,所述设备1根据对应请求页的页记录数信息确定所述请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
具体地,在此,所述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表的记录数等。通过所述请求页的序号和所述请求页的记录数可以确定所述请求页中满足条件的记录对应在表中的位置,如所述请求页的序号为x页,所述请求页的记录数为y个,则所述请求页中满足条件的记录在所述多个子表中第(x-1)y个记录至第xy个记录的位置,同时,结合所述每张表的记录数,便可以确定第(x-1)y个记录至第xy个记录在所述哪一个或多个子表上,即所述请求页对应的页记录位置信息,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
本领域技术人员应能理解,上述页记录数信息包括所述请求页的序号、所述请求页的记录数、每张表满足条件的记录数仅为举例,其他页记录数信息如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
优选地,在所述方法中,所述用于在数据库中进行查询的设备1还用于检测是否满足触发条件;若满足所述触发条件,删除所述缓存中与所述触发条件相对应的映射关系。所述的触发条件包括对所述数据库进行一定的数据操作,当执行所述数据操作后,即所述触发条件满足,则数据库中原有的数据基于一定的数据操作而发生相应的改变,例如数据减少,此时触发条件所对应的表中的数据记录消失,则此数据记录为查询记录,并在缓存中存储的所述查询记录对应的所述第二查询信息以及所述页记录位置信息的存在就不再有意义,因此基于所满足的触发条件删除所述缓存中与所述触发条件对应的映射关系,从而及时清除缓存中的失效数据,释放相应缓存空间。
更优选地,在所述方法中,所述触发条件包括以下至少任一项一是在所述子表中插入数据记录;二是在所述子表中删除数据记录;三是在所述子表中修改数据记录;四是删除所述子表。在此,所述触发条件包括对于子表或是子表中的数据进行一定的操作,触发条件的满足意味着与触发条件对应的子表中的数据发生变化,基于相应子表的数据信息缓存的数据相应失效。因此,确定触发条件所对应的子表,进而判断所述缓存中的各个缓存对象,如各个所述第二查询信息,以及与其对应的各个所述页记录位置信息中是否涉及到所述触发条件对应的表,若所述触发条件对应的表在某个所述缓存对象内,则将所述缓存对象清除。
本领域技术人员应能理解,上述触发条件仅为举例,其他触发条件如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (14)
1.一种用于在数据库中进行查询的方法,其中,所述方法包括:
获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;
确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;
根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;
根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存;
其中,所述获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录包括:
根据所述第一查询信息在所述缓存中匹配查询,以确定所述缓存中是否包括与所述第一查询信息相匹配的第二查询信息;
当所述缓存中包括所述第二查询信息,根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录;
根据所述对应记录,并结合所述第一查询信息所对应的页记录数信息,生成所述请求页。
2.根据权利要求1所述的方法,其中,所述获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录还包括:
当所述缓存中不包括所述第二查询信息,获取所述第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。
3.根据权利要求1所述的方法,其中,所述第二查询信息与所述第一查询信息具有相同的查询关键词信息。
4.根据权利要求1至3中任一项所述的方法,其中,所述获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录包括:
根据所述第一查询信息从由数据库中一表划分所得的多个子表中筛选优选子表,并根据所述第一查询信息在所述优选子表中查询获得查询记录。
5.根据权利要求1至3中任一项所述的方法,其中,所述确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息包括:
根据对应请求页的页记录数信息确定所述请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
6.根据权利要求1至3中任一项所述的方法,其中,所述方法还包括:
检测是否满足触发条件;若满足所述触发条件,删除所述缓存中与所述触发条件相对应的映射关系。
7.根据权利要求6所述的方法,其中,所述触发条件包括以下至少任一项:
在所述子表中插入数据记录;
在所述子表中删除数据记录;
在所述子表中修改数据记录;
删除所述子表。
8.一种用于在数据库中进行查询的设备,其中,所述设备包括:
第一装置,用于获取第一查询信息在由数据库中一表划分所得的多个子表中的查询记录;
第二装置,用于确定请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息;
第三装置,用于根据所述页记录位置信息从所述多个子表获取对应记录以生成所述请求页;
第四装置,用于根据所述第一查询信息与所述页记录位置信息的映射关系更新对应缓存;
第五装置,用于根据所述第一查询信息在所述缓存中匹配查询,以确定所述缓存中是否包括与所述第一查询信息相匹配的第二查询信息;
第六装置,用于当所述缓存中包括所述第二查询信息,根据所述第二查询信息所对应的页记录位置信息,从所述多个子表获取对应记录;
根据所述对应记录,并结合所述第一查询信息所对应的页记录数信息,生成所述请求页。
9.根据权利要求8所述的设备,其中,所述第一装置用于:
当所述缓存中不包括所述第二查询信息,获取所述第一查询信息在由数据库中一表划分所得的多个子表中的查询记录。
10.根据权利要求8所述的设备,其中,所述第二查询信息与所述第一查询信息具有相同的查询关键词信息。
11.根据权利要求8至10中任一项所述的设备,其中,所述第一装置用于:
根据所述第一查询信息从由数据库中一表划分所得的多个子表中筛选优选子表,并根据所述第一查询信息在所述优选子表中查询获得查询记录。
12.根据权利要求8至10中任一项所述的设备,其中,所述第二装置用于:
根据对应请求页的页记录数信息确定所述请求页所对应的页记录位置信息,其中,所述页记录位置信息包括所述请求页中各查询记录在所述多个子表中的记录位置信息。
13.根据权利要求8至10中任一项所述的设备,其中,所述设备还用于:
检测是否满足触发条件;若满足所述触发条件,删除所述缓存中与所述触发条件相对应的映射关系。
14.根据权利要求13所述的设备,其中,所述触发条件包括以下至少任一项:
在所述子表中插入数据记录;
在所述子表中删除数据记录;
在所述子表中修改数据记录;
删除所述子表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410457620.8A CN105468644B (zh) | 2014-09-10 | 2014-09-10 | 一种用于在数据库中进行查询的方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410457620.8A CN105468644B (zh) | 2014-09-10 | 2014-09-10 | 一种用于在数据库中进行查询的方法与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468644A CN105468644A (zh) | 2016-04-06 |
CN105468644B true CN105468644B (zh) | 2018-11-23 |
Family
ID=55606349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410457620.8A Active CN105468644B (zh) | 2014-09-10 | 2014-09-10 | 一种用于在数据库中进行查询的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468644B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315753B (zh) * | 2016-04-27 | 2020-11-03 | 北京京东尚科信息技术有限公司 | 跨多数据库的分页方法和装置 |
CN108874753B (zh) * | 2018-06-13 | 2022-05-10 | 百度在线网络技术(北京)有限公司 | 主题帖回复的查找方法、装置和计算机设备 |
WO2020047840A1 (zh) * | 2018-09-07 | 2020-03-12 | 威富通科技有限公司 | 账单信息缓存方法、账单信息查询方法和终端设备 |
CN110928900B (zh) * | 2018-09-17 | 2021-02-19 | 马上消费金融股份有限公司 | 多表数据的查询方法、装置、终端以及计算机存储介质 |
CN111488370B (zh) * | 2020-04-02 | 2023-09-12 | 杭州迪普科技股份有限公司 | 列表分页快速响应系统和方法 |
CN112069207B (zh) * | 2020-08-27 | 2023-10-03 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631366B1 (en) * | 1998-10-20 | 2003-10-07 | Sybase, Inc. | Database system providing methodology for optimizing latching/copying costs in index scans on data-only locked tables |
CN1556482A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种用于实现数据库多表查询的数据处理方法 |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN103778135A (zh) * | 2012-10-18 | 2014-05-07 | 厦门雅迅网络股份有限公司 | 一种实时数据的分布存储和分页查询方法 |
CN104123340A (zh) * | 2014-06-25 | 2014-10-29 | 世纪禾光科技发展(北京)有限公司 | 一种数据库分表分页查询方法及系统 |
-
2014
- 2014-09-10 CN CN201410457620.8A patent/CN105468644B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631366B1 (en) * | 1998-10-20 | 2003-10-07 | Sybase, Inc. | Database system providing methodology for optimizing latching/copying costs in index scans on data-only locked tables |
CN1556482A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种用于实现数据库多表查询的数据处理方法 |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN103778135A (zh) * | 2012-10-18 | 2014-05-07 | 厦门雅迅网络股份有限公司 | 一种实时数据的分布存储和分页查询方法 |
CN104123340A (zh) * | 2014-06-25 | 2014-10-29 | 世纪禾光科技发展(北京)有限公司 | 一种数据库分表分页查询方法及系统 |
Non-Patent Citations (2)
Title |
---|
一种支持多条件过滤查询的分页组件设计与实现;祝衍军;《电脑知识与技术》;20140131;第10卷(第3期);第514-519页 * |
分布式结构化数据分页查询中的动态归并算法;段翰聪 等;《小型微型计算机系统》;20130731;第34卷(第7期);第1503-1506页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105468644A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468644B (zh) | 一种用于在数据库中进行查询的方法与设备 | |
US9411840B2 (en) | Scalable data structures | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
RU2663358C2 (ru) | Устройство и способ кластерного хранения | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN111247518B (zh) | 用于数据库分片的方法和系统 | |
CN108255958A (zh) | 数据查询方法、装置和存储介质 | |
US11249980B2 (en) | Updating of in-memory synopsis metadata for inserts in database table | |
US10067968B2 (en) | Pre-caching of relational database management system based on data retrieval patterns | |
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
CN107783985B (zh) | 一种分布式数据库查询方法、装置及管理系统 | |
US20110040761A1 (en) | Estimation of postings list length in a search system using an approximation table | |
US20180329712A1 (en) | File access predication using counter based eviction policies at the file and page level | |
CN111737265B (zh) | 区块数据访问方法、区块数据存储方法及装置 | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
CN110858210B (zh) | 数据查询方法及装置 | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN114297145A (zh) | 一种ipfs节点本地基于关键词搜索文件的方法、介质及系统 | |
US9286349B2 (en) | Dynamic search system | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments | |
CN110399451B (zh) | 一种基于非易失性内存的全文检索引擎缓存方法,系统,设备及可读存储介质 | |
CN114265884A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN108153883B (zh) | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180508 Address after: Cayman Islands, Grand Cayman Island capital building, four level 847 box Applicant after: CAINIAO SMART LOGISTICS HOLDING Ltd. Address before: Cayman Islands Grand Cayman capital building a four storey No. 847 mailbox Applicant before: ALIBABA GROUP HOLDING Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |