一种针对多数据库表的跨库分页查询方法技术

技术编号:11383585 阅读:175 留言:0更新日期:2015-05-01 08:36
本发明专利技术提供一种针对多数据库表的跨库分页查询方法,属于数据查询技术领域。该方法用于对多个数据库中的多数据库表进行数据查询,首先判断在缓存中是否存储有对应查询指令的反映查询记录情况的统计信息;如果判断为“没有”,将该指令按查询任务拆分为多个子任务,并行地执行该多个子任务,从而返回多个子任务对应的查询记录的总的条数并生该统计信息,将其存储在缓存中;如果判断为“有”,根据所述统计信息获知预计的查询记录对应的子任务并且并行执行该对应的子任务。该方法查询效率高,安全性好,适用于多数据库表跨库分页查询。

【技术实现步骤摘要】

本专利技术属于数据查询
,涉及针对多数据库表的跨库分页查询方法
技术介绍
随着大数据时代的来临,针对海量数据的查询越来越不容易,其查询的效率也备受关注。以银行业金融行业为例,随着银行卡产业的高速发展,每日的跨行交易总量已经突破了三千万笔,传统一个数据库单张表的方式,已经远远不能满足数据库运维的需求,拆分数据库表和拆分数据库是必然的选择。因此,各种交易数据会以多个数据库、每个数据库对应多张数据库表的形式来存储。目前针对多张位于不同数据库的数据库表的查询中,比较通用方法的有以下几种。第一种,为多张数据库表创建视图,通过访问视图来达到对多张数据库表的访问。针对每张数据库表数据量不是特别大、表不是特别多情况,创建视图是一种简单可行的方案。但是在每张数据库表的数据量比较大且数据库表张数比较多的情况(例如:每张表数据量超过3千万,366张数据表)下,即使创建了索引,通过视图访问也会效率十分低下,甚至出现不可访问的情况。第二中,通过创建nickname(昵称)的方式,将跨数据库查询转换成单库查询。采用nickname后,不能完全实现数据库之间相互独立,存在潜在的安全隐患。在银行、金融等对数据安全要求比较高的行业,已经禁止采用nickname。即使在安全性要求较低的数据查询领域采用nickname,也只能解决跨库访问的问题,仍然面临数据库表张数过多的问题。有鉴于此,有必要提出一种新型的针对多数据库表的跨库查询方法。
技术实现思路
本专利技术的目的在于,提高多数据库表跨库查询的查询效率。<br>为实现以上目的或者其他目的,本专利技术提供以下技术方案。按照本专利技术的一方面,提供一种数据分页查询方法,其中,每页查询记录的输出对应一次查询,对M个数据库中的N张数据库表进行数据查询的指令对应至少一页查询,其中M和N为整数,M≥2,N≥M,每个数据库至少对应一张数据库表;所述数据分页查询方法包括以下步骤:    接收到需要对M个数据库中的N张数据库表进行数据查询的所述指令;    判断在缓存中是否存储有对应该指令的反映查询记录情况的统计信息,从而判断该指令在缓存的数据存储周期内是否是第一次接收;    如果缓存中没有存储所述统计信息,执行以下步骤:    S110,将该指令按查询任务拆分为F个子任务,每个子任务对应一个数据库的一张或多张数据库表的查询,其中F为整数,N≥F≥M;    S120,并行地执行F个子任务;S130,在执行完成后返回所有F个子任务对应的查询记录的总的条数G,并返回第一前Q条查询记录,其中,Q为分页查询时每页输出的查询记录的条数,G≥Q;S140,生成所述统计信息并将该统计信息存储至所述缓存,所述统计信息包括每个子任务对应的查询记录的条数;S150,将第一前Q条查询记录输出以输出第一页查询结果;如果缓存中存储有所述统计信息,执行以下步骤:S210,根据所述统计信息获知预计的查询记录对应的一个或多个子任务;S220,并行执行所述F个子任务中的该一个或多个子任务;S230,返回第二前Q条查询记录并将该Q条查询记录按一页查询结果输出。按照本专利技术一实施例的数据分页查询方法,其中,所述第一或第二前Q条查询记录为对应于多个子任务所返回的查询记录时,合并该多个子任务所返回的查询记录。按照本专利技术还一实施例的数据分页查询方法,其中,基于所述总的条数G以及每页输出的查询记录的条数Q,如果G大于Q,则返回所述接收步骤,并在所述判断步骤中判断为缓存中存储有所述统计信息,以重复执行所述步骤S210至S230,从而总共输出K页查询结果,其中K为将G除以Q的结果向上取整得到的整数。在之前所述任一实施例中,优选地,所述指令为SQL指令,所述SQL指令按消息摘要算法5(MD5)处理以得出其MD5摘要信息。在之前所述任一实施例中,具体地,所述统计信息被表述为以下格式:<MD5(SQL),(<Split0,F1>,<Split1, F2>,…,<Split(F-1), FF>)>;其中,MD5(SQL)为SQL指令的MD5摘要信息,Split0至Split(F-1)依次表示拆分形成的第一子任务至第F子任务,F1至FF依次表示第一子任务至第F子任务分别所对应的查询记录的条数。在之前所述任一实施例中,优选地,在所述判断步骤,根据接收的SQL指令的MD5摘要信息与统计信息中的MD5摘要信息是否向对应来判断是否存储有对应该SQL指令的反映查询记录的统计信息。在之前所述任一实施例中,优选地,所述缓存的数据存储周期不超过一天。在之前所述任一实施例中,优选地,F=M,每个子任务对应一个数据库的一张或多张数据库表的查询。按照本专利技术的又一方面,提供一种数据分页查询装置,其中,每页查询记录的输出对应一次查询,对M个数据库中的N张数据库表进行数据查询的指令对应至少一页查询,其中M和N为整数,M≥2,N≥M,每个数据库至少对应一张数据库表;所述数据分页查询装置包括以下部件:指令接收部件,用于接收到需要对M个数据库中的N张数据库表进行数据查询的所述指令;    统计信息判断部件,用于判断在缓存中是否存储有对应该指令的反映查询记录情况的统计信息,从而判断该指令在缓存的数据存储周期内是否是第一次接收;    第一部件,在缓存中没有存储所述统计信息的情况下用于执行以下步骤:    S110,将该指令按查询任务拆分为F个子任务,每个子任务对应一个数据库的一张或多张数据库表的查询,其中F为整数,N≥F≥M;    S120,并行地执行F个子任务;S130,在执行完成后返回所有F个子任务对应的查询记录的总的条数G,并返回第一前Q条查询记录,其中,Q为分页查询时每页输出的查询记录的条数,G≥Q;S140,生成所述统计信息并将该统计信息存储至所述缓存,所述统计信息包括每个子任务对应的查询记录的条数;S150,将第一前Q条查询记录输出以输出第一页查询结果;第二部件,在缓存中存储有所述统计信息的情况下用于执行以下步骤:S210,根据所述统计信息获知预计的查询记录对应的一个或多个子任务;S220,并行执行所述F个子任务中的该一个或多个子任务;S230,返回第二前Q条查询记录并将该Q条查询记录按一页查询结果输出。按照本专利技术一实施例的数据分页查询装置,其中,所述第一或第二前Q条查询记录为对应于多个子任务所返回的查询记录时,合并该多个子任务所返回的查询记录本专利技术的技术效果是,通过将查询任务拆分并行查询,并将反映查询记录情况的统计信息在缓存中存储,因此,在跨库分页查询时,其后针对该查询指令的某页的查询可以实现定位查询,最大限度地减少对数据库的访问,大大提高分页查询的效率,适用于多数据库表的跨库分页查询。并且,数据库之间在查询过程中也相互独立,能保证跨库查询的安本文档来自技高网...
一种针对多数据库表的跨库分页查询方法

【技术保护点】
一种数据分页查询方法,其中,每页查询记录的输出对应一次查询,对M个数据库中的N张数据库表进行数据查询的指令对应至少一页查询,其中M和N为整数,M≥2,N≥M,每个数据库至少对应一张数据库表;其特征在于,所述数据分页查询方法包括以下步骤:    接收到需要对M个数据库中的N张数据库表进行数据查询的所述指令;    判断在缓存中是否存储有对应该指令的反映查询记录情况的统计信息,从而判断该指令在缓存的数据存储周期内是否是第一次接收;    如果缓存中没有存储所述统计信息,执行以下步骤:    S110,将该指令按查询任务拆分为F个子任务,每个子任务对应一个数据库的一张或多张数据库表的查询,其中F为整数,N≥F≥M;    S120,并行地执行F个子任务;S130,在执行完成后返回所有F个子任务对应的查询记录的总的条数G,并返回第一前Q条查询记录,其中,Q为分页查询时每页输出的查询记录的条数,G≥Q;S140,生成所述统计信息并将该统计信息存储至所述缓存,所述统计信息包括每个子任务对应的查询记录的条数;S150,将第一前Q条查询记录输出以输出第一页查询结果;如果缓存中存储有所述统计信息,执行以下步骤:S210,根据所述统计信息获知预计的查询记录对应的一个或多个子任务;S220,并行执行所述F个子任务中的该一个或多个子任务;S230,返回第二前Q条查询记录并将该Q条查询记录按一页查询结果输出。...

【技术特征摘要】
1.一种数据分页查询方法,其中,每页查询记录的输出对应一次查询,对M个数据库中的N张数据库表进行数据查询的指令对应至少一页查询,其中M和N为整数,M≥2,N≥M,每个数据库至少对应一张数据库表;
其特征在于,所述数据分页查询方法包括以下步骤:
    接收到需要对M个数据库中的N张数据库表进行数据查询的所述指令;
    判断在缓存中是否存储有对应该指令的反映查询记录情况的统计信息,从而判断该指令在缓存的数据存储周期内是否是第一次接收;
    如果缓存中没有存储所述统计信息,执行以下步骤:
    S110,将该指令按查询任务拆分为F个子任务,每个子任务对应一个数据库的一张或多张数据库表的查询,其中F为整数,N≥F≥M;
    S120,并行地执行F个子任务;
S130,在执行完成后返回所有F个子任务对应的查询记录的总的条数G,并返回第一前Q条查询记录,其中,Q为分页查询时每页输出的查询记录的条数,G≥Q;
S140,生成所述统计信息并将该统计信息存储至所述缓存,所述统计信息包括每个子任务对应的查询记录的条数;
S150,将第一前Q条查询记录输出以输出第一页查询结果;
如果缓存中存储有所述统计信息,执行以下步骤:
S210,根据所述统计信息获知预计的查询记录对应的一个或多个子任务;
S220,并行执行所述F个子任务中的该一个或多个子任务;
S230,返回第二前Q条查询记录并将该Q条查询记录按一页查询结果输出。
2.如权利要求1所述的数据分页查询方法,其特征在于,所述第一或第二前Q条查询记录为对应于多个子任务所返回的查询记录时,合并该多个子任务所返回的查询记录。
3.如权利要求1所述的数据分页查询方法,其特征在于,基于所述总的条数G以及每页输出的查询记录的条数Q,如果G大于Q,则返回所述接收步骤,并在所述判断步骤中判断为缓存中存储有所述统计信息,以重复执行所述步骤S210至S230,从而总共输出K页查询结果,其中K为将G除以Q的结果向上取整得到的整数。
4.如权利要求1所述的数据分页查询方法,其特征在于,所述指令为SQL指令,所述SQL指令按消息摘要算法5(MD5)处理以得出其MD5摘要信息。
5.如权利要求4所述的数据分页查询方法,其特征在于,所述统计信息被表述为以下格式:
<MD5(SQL),(<Split0,F1>,<Split1, F2>,…,<Split(F-1), FF>)>;...

【专利技术属性】
技术研发人员:唐真周继恩汤茂安李伟
申请(专利权)人:中国银联股份有限公司
类型:发明
国别省市:上海;31

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

1