CN110019339A - 一种数据查询方法和*** - Google Patents
一种数据查询方法和*** Download PDFInfo
- Publication number
- CN110019339A CN110019339A CN201711160500.1A CN201711160500A CN110019339A CN 110019339 A CN110019339 A CN 110019339A CN 201711160500 A CN201711160500 A CN 201711160500A CN 110019339 A CN110019339 A CN 110019339A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- data query
- major key
- deviant
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法和***,涉及计算机技术领域。该方法的一具体实施方式包括:查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。该实施方式按照配置文件中的配置信息和偏移值获取进行数据查询的线程和每个线程查询的主键区间,分数据段、多线程的查询数据,解决了现有技术进行数据查询耗时长、不稳定的问题。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据查询方法和***。
背景技术
电商公司的单张用户数据表一般为亿级别,针对用户做的各种日常营销活动都需要基于这些用户数据表展开,比如定期给达到某种等级的用户发抵用券、定期给达到某些条件的用户发消息、定期给所有用户重新计算成长值等级等。如何从亿级别的用户数据表中高效快速且可控地查询出需要的数据成为评价数据查询***非常重要的指标。
现有技术在进行数据查询时(比如从用户数据表中查询出符合抵用券发放条件的用户),一般以定时任务的方式,按照业务要求的执行频率(比如每月执行一次)进行查询。具体有以下两种实现方式:方式一:当数据查询任务被触发时,将其发送到业务服务集群中的某一台业务服务器上,该业务服务器根据查询条件以循环分页(Page)、查询固定条数的方式到数据库中查询当前分页的数据;然后将Page+1,按照上述方式继续查询下一分页的数据,直到无法查询到新数据时停止。方式二:当数据查询任务被触发时,根据配置表将其发送到业务服务集群中的所有业务服务器中;每个业务服务器按照配置表中配置的查询区间,根据查询条件以循环分页、查询固定条数的方式到数据库中查询当前分页数据;然后将Page+1,按照上述方式查询下一分页的数据,直到无法查询到新数据时停止。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
(1)上述两种方式中,不管数据查询任务是在业务服务集群中的一台业务服务器还是多台业务服务器上执行,由于数据量大以致执行时间过长,进而导致数据查询任务易中断,运行状态不稳定。比如:执行期间内有业务上线需要重启业务服务器,或者某台业务服务器由于长时间执行大量数据以致负载过高,均会导致数据查询任务的中断。
(2)需要人力持续关注数据查询任务是否中断,如果发现中断,还需要人力排查哪些数据已被处理,哪些数据未被处理,然后手动触发定时器以继续执行数据查询任务。
发明内容
有鉴于此,本发明实施例提供一种数据查询方法和***,按照配置文件中的配置信息和偏移值获取进行数据查询的线程和每个线程查询的主键区间,分数据段、多线程的查询数据,解决了现有技术进行数据查询耗时长、不稳定的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据查询方法。
本发明实施例的一种数据查询方法,包括:查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。
可选地,所述根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间,包括:根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数;其中,所述配置信息包括所述总数据条数和所述限制查询数据条数;根据所述线程数从线程池获取对应数量的线程;根据所述偏移值和所述限制查询数据条数,获取每个线程查询的主键区间。
可选地,所述查询配置文件的步骤之前,还包括:接收根据执行频率和负载均衡原则分配的数据查询任务。
可选地,所述查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值的步骤之后以及所述根据所述配置信息和偏移值的步骤之前,还包括:根据所述配置文件确认无需退出当前数据查询时,根据所述总数据条数更新所述偏移值;将更新值作为下一次数据查询的主键的偏移值,并保存在所述配置文件中。
可选地,所述根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数的步骤之后以及所述根据所述线程数从线程池获取对应数量的线程的步骤之前,还包括:根据加强执行时间区间和非加强执行时间区间的线程池规格,获取当前数据查询所使用的线程池规格;其中,所述配置信息中包括带有线程池规格的所述加强执行时间区间和所述非加强执行时间区间的线程池规格,所述线程池规格为线程池中最多能够同时执行的线程数;确认所述线程数超出所述线程池规格时,将所述线程数调整为所述线程池规格允许的最大线程数。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据查询***。
本发明实施例的一种数据查询***,包括:文件查询模块,用于查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;确定模块,用于根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;数据查询模块,用于每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。
可选地,所述确定模块,还用于:根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数;其中,所述配置信息包括所述总数据条数和所述限制查询数据条数;根据所述线程数从线程池获取对应数量的线程;以及根据所述偏移值和所述限制查询数据条数,获取每个线程查询的主键区间。
可选地,所述***还包括:接收模块,用于接收根据执行频率和负载均衡原则分配的数据查询任务。
可选地,所述***还包括:更新模块,用于根据所述配置文件确认无需退出当前数据查询时,根据所述总数据条数更新所述偏移值;以及将更新值作为下一次数据查询的主键的偏移值,并保存在所述配置文件中。
可选地,所述***还包括:调整模块,用于根据加强执行时间区间和非加强执行时间区间的线程池规格,获取当前数据查询所使用的线程池规格;其中,所述配置信息中包括带有线程池规格的所述加强执行时间区间和所述非加强执行时间区间的线程池规格,所述线程池规格为线程池中最多能够同时执行的线程数;以及确认所述线程数超出所述线程池规格时,将所述线程数调整为所述线程池规格允许的最大线程数
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种数据查询方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种数据查询方法。
上述发明中的一个实施例具有如下优点或有益效果:根据配置文件中的配置信息和偏移值获取进行数据查询的线程和每个线程要查询的主键区间,分数据段、多线程的查询数据,数据查询效率高、稳定性好;每次执行数据查询任务,均通过负载均衡原则选取业务服务集群中的某台业务服务器执行该任务,使得数据查询任务被均匀分配到各业务服务器,避免了某台业务服务器负载过高的问题;通过将每次数据查询后的主键的偏移值更新到配置文件,可清楚地获知数据查询任务的执行进度;通过在配置文件中设定加强执行时间区间和线程池规格,合理的利用了空闲资源。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据查询方法的主要步骤的示意图;
图2是根据本发明实施例的数据查询方法的主要流程示意图;
图3是根据本发明实施例的数据查询***的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适用于来实现本发明实施例的电子设备的计算机装置的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据查询方法的主要步骤的示意图。如图1所示,本发明实施例的数据查询方法,主要包括如下步骤:
步骤S101:查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值。其中,所述配置文件中包括已经从待查询目标文件中查询到的主键的偏移值(offset)以及配置信息(config);所述主键能够唯一地标识待查询目标文件中的每一行;所述偏移值是当前查询进度的主键值到起点(一般是1)的主键值的差值;所述配置信息中可以包括每次进行数据查询所需要查询的总数据条数(count)和每个线程在数据库中的查询数据限制条数(tpgSize)。
步骤S102:根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间。该步骤具体包括:首先根据count和tpgSize获取进行数据查询所需的线程数;之后根据所述线程数从已经初始化好的线程池中获取对应数量的线程;然后根据offset和tpgSize获取每个线程查询的主键区间。
步骤S103:每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。上述三个步骤由业务服务器执行,待查询目标文件一般保存在数据库中,业务服务器向数据库发送数据查询请求,以从待查询目标文件中获取数据。所述业务服务器为执行数据查询任务的服务器。
图2是根据本发明实施例的数据查询方法的主要流程示意图。如图2所示,本发明实施例的数据查询方法,由应用服务器、调度服务器和业务服务集群构成的数据查询***完成,实施例中待查询目标文件为待查询数据表,该方法主要包括以下步骤:
步骤S201:应用服务器创建配置文件,将所述配置文件保存在数据库中。其中,所述配置文件中包括已经从待查询数据表中查询到的主键的偏移值和配置信息;配置信息中包括每次进行数据查询所需要查询的总数据条数(count)、每个线程在数据库中的查询数据限制条数(tpgSize)、退出条件(exitCondition)、带有线程池规格的加强执行时间区间(powerExe)、和非加强执行时间区间的线程池规格(tpool)。假设统计用户前一天的登录行为的时间段必须在每天8点以后,那么退出条件可以配置为00:00:00-08:00:00,如果在该时间段就退出数据查询任务。
在一优选的实施例中,配置信息可以用JSON(JavaScript Object Notation,一种数据交换格式)语法实现,比如:
{"count":100,"exitCondition":"2017-03-20 00:00:00",
"powerExe":"000000-050000_50","tpgSize":10,"tpool":20}
在该实施例中,count被设置为100;exitCondition为2017-03-2000:00:00,根据该值判断是否需要退出当前数据查询任务;powerExe被设置为000000-050000_50,含义为:开始时分秒-结束时分秒_线程池规格,在000000-050000这个加强执行时间区间,采用的线程池规格为50;tpgSize被设置为10,count需要能整除该值;tpool被设置为20,即在非加强执行时间区间,采用的线程池规格为20。线程池规格是指该线程池最多允许同时运行的线程数,比如最多50个线程同时运行的线程池。不同线程池规格的线程池预先由数据查询***初始化好,当数据查询任务的执行时间发生加强执行时间区间与非加强时间区间的转换时,则切换为对应的线程池规格,以更好的利用线程,提高资源利用率。
由于本发明实施例的配置文件中记录有偏移值,该偏移值代表对待查询数据表进行数据查询的进度。如果业务服务器重启,可以从该配置文件中读取数据查询的进度,然后继续进行数据查询,数据查询任务不会中断且无需人工干预。
在一优选的实施例中,可以根据各业务服务器的负载状态,灵活调整配置文件中的count、tpgSize、powerExe和tpool等。通过该配置文件,使得数据查询任务的执行可配置,方便维护。
步骤S202:调度服务器设置定时器的执行频率,为业务服务集群中的所有业务服务器分别设置同步标识(该同步标识例如可以是synchronized),将数据查询任务按照负载均衡原则发送到业务服务集群中的某一个业务服务器中。定时器的执行频率即为数据查询任务的执行频率,该执行频率不再按照业务要求的执行频率设置,而是根据最终调试的性能需要,设置成合适的频率(比如可以设置为每2秒执行一次),缩短了数据查询的耗时。
本发明实施例中,每次数据查询任务的调度都是发送到业务服务集群的某一个业务服务器中,达到将数据查询任务分服务器、分时间段、多业务服务器并发执行的目的。加入同步标识的目的避免单个业务服务器并发执行数据查询任务,即避免某业务服务器在执行数据查询任务期间,还需再接收新的数据查询任务。在业务服务集群中,一般由调用方(调度服务器)用轮询的方式实现对被调用方(业务服务器)的负载均衡。
本发明实施例中,调度服务器采用轮询的方式使得业务服务集群的所有业务服务器都能够根据数据查询任务的执行频率间歇参与工作,各业务服务器的负载是均衡的,不易出现某一台业务服务器长时间不间断运行带来的负载过高,以致业务服务器不可用问题,因此数据查询任务也不会中断。
步骤S203:所述业务服务器接收调度服务器根据执行频率和负载均衡原则分配的数据查询任务,之后从数据库中查询配置文件,以获取偏移值和配置信息。
步骤S204:所述业务服务器判断当前数据查询任务是自动触发还是人工触发,如果是自动触发,则执行步骤S205;如果是人工触发,则执行步骤S211。人工触发一般是处理数据,默认要执行,故不执行步骤S205的退出检查。人工触发需要向定时器传入人工参数或者在配置文件中配置人工参数,如果人工参数不为空,则该数据查询任务为人工触发;否则为自动触发。其中,所述人工参数为管理后台传入的参数。
步骤S205:所述业务服务器根据判断条件判断是否应该退出当前数据查询任务,如果需要退出,执行步骤S213;如果不需要退出,执行步骤S206。其中,所述判断条件为配置信息中的退出条件和其他条件,其他条件比如可以是当前的偏移值是否已经超过待查询数据表的主键的最大值。
步骤S206:所述业务服务器根据总数据条数更新偏移值,将更新值作为下一次数据查询任务的偏移值,判断是否更新成功,如果更新成功,则执行步骤S207;否则,执行步骤S214。将当前的offset作为当前数据查询任务的主键的最小值,更新过程为:offset=offset+count,将更新值以乐观锁的方式更新到配置文件中。乐观锁用来防止由于各线程并发执行产生的数据更新错乱。offset~offset+count为在数据库进行一次查询的主键区间。
步骤S207:所述业务服务器根据非加强执行区间的线程池规格和加强执行时间区间,获取当前数据查询任务应该使用的线程池规格,执行步骤S208。由tpool和powerExe得出应该使用的线程池规格。在非加强执行区间,比如白天繁忙时,线程数量紧张,可以设置线程池规格相对低些(比如设置为20);而在加强执行区间,比如夜间空闲时,线程数量相对富余,可以设置线程池规格相对高些(比如设置为50)。该方式能够合理利用线程资源,减少数据查询任务的等待执行时间。
步骤S208:所述业务服务器根据总数据条数和查询数据限制条数,计算出当前数据查询任务需要的线程数。将count除以tpgSize,计算出当前数据查询任务所需要的线程数,执行步骤S209。该步骤和步骤S207没有先后顺序,可先执行步骤S208,再执行步骤S207。
步骤S209:所述业务服务器根据步骤S207中计算出的线程池规格调整所述线程数,根据所述线程数从线程池获取对应数量的线程,根据偏移量和查询数据限制条数得到每个线程需要查询的主键区间,执行步骤S210。如果线程池规格为20,计算出的线程数为50,则将该线程数调整为20,并从业务服务器的线程池中获取20个线程进行后续的数据查询。每个线程分别的查询的主键区间依次是:[offset,offset+tpgsize)、[offset+tpgsize,offset+2*tpgsize)、…,各主键区间均为前闭后开。
步骤S210:所述业务服务器的每个线程根据自身主键区间和预设查询条件分别查询数据库,判断能否查询到数据,如果能够查询到数据,执行步骤S212;如果未能查询到数据,执行步骤S214。假设会员等级有1-5共5个级别,需要查询等级为4、5这两个级别的会员,则预设查询条件就可以是:查询等级为4、5这两个级别的会员。所述数据处理线程为对查询到数据的具体处理过程,比如对查询到的用户发放抵用券等,将该线程提交到线程池就可以对数据进行处理。
步骤S211:所述业务服务器根据执行参数调用执行方法以进行数据查询,判断能否查询到数据,如果能够查询到数据,执行步骤S212;如果未能查询到数据,执行步骤S214。
步骤S212:根据所述数据生成数据处理线程,将所述数据处理线程提交到线程池进行执行,执行步骤S214。数据处理是JAVARunnable的子类,生成数据处理线程的具体实现可以是:新建一个数据处理类的实例,在该实例的构造方法中传入查询出的数据,该实例就是一个线程实例,将该线程实例提交到线程池就可以由该线程池进行处理。其中,Runnable是JAVA实现多线程的接口。
步骤S213:刷新定时器并更新判断条件,执行步骤S214。更新判断条件中的其他条件,比如可以是更新数据库中记录的待查询数据表中的主键值。刷新定时器并更新判断条件的目的是执行下一次数据查询任务时,如果满足判断条件就可以直接结束当前数据查询任务。
步骤S214:结束当前数据查询任务。当调度服务器受到定时器的触发,会根据负载均衡原则发送新的数据查询任务到业务服务集群的一个业务服务器中,该业务服务器中按照步骤S203-步骤S214对收到的数据查询任务进行处理。在本发明实施例的高并发、多线程、多服务器、空闲资源利用的设计下,大幅降低了数据查询的运行时间(以给达到某种等级以上用户发抵用券为例,应用本发明实施例的技术方案之前查询2.6亿用户的数据表花了接近2周,应用本发明实施例的技术方案之后变成了8小时左右完成,且服务器运行平稳。
通过本发明实施例的数据查询方法可以看出,根据配置文件中的配置信息和偏移值获取线程数和每个线程要查询的主键区间,分数据段、多线程的查询数据,数据查询效率高、稳定性好;每次执行数据查询任务,均通过负载均衡原则选取业务服务集群中的某台业务服务器执行该任务,使得数据查询任务被均匀分配到各业务服务器,避免了某台业务服务器负载过高的问题;通过创建配置文件,使得数据查询任务的执行可配置,且方便维护;通过将每次数据查询后的主键的偏移值更新到配置文件,可清楚地获知数据查询任务的执行进度;通过在配置文件中设定加强执行时间区间和线程池规格,合理的利用了空闲资源。
图3是根据本发明实施例的数据查询***的主要模块的示意图。如图3所示,本发明实施例的数据查询***300,主要包括:
文件查询模块301,用于查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值。其中,所述配置文件中包括已经从待查询目标文件中查询到的主键的偏移值以及配置信息;所述主键能够唯一地标识待查询目标文件中的每一行;所述偏移值是当前查询进度的主键值到起点的主键值的差值;所述配置信息中可以包括每次进行数据查询所需要查询的总数据条数和每个线程在数据库中的查询数据限制条数。
确定模块302,用于根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间。该模块的具体处理过程为:根据总数据条数和查询数据限制条数获取进行数据查询所需的线程数;根据所述线程数从已经初始化好的线程池中获取对应数量的线程;根据偏移值和查询数据限制条数获取每个线程查询的主键区间。
数据查询模块303,用于每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。业务服务器包含上述三个模块,待查询目标文件一般保存在数据库中,业务服务器向数据库发送数据查询请求,以从待查询目标文件中获取数据。所述业务服务器为执行数据查询任务的服务器。
另外,本发明实施例的数据查询***300还可以包括:接收模块和更新模块,确定模块302中还包括调整模块(图中未示出)。其中,接收模块,用于接收根据执行频率和负载均衡原则分配的数据查询任务。更新模块,用于根据所述配置文件确认无需退出当前数据查询时,根据所述总数据条数更新所述偏移值;以及将更新值作为下一次数据查询的主键的偏移值,并保存在所述配置文件中。调整模块,用于根据加强执行时间区间和非加强执行时间区间的线程池规格,获取当前数据查询所使用的线程池规格;以及确认所述线程数超出所述线程池规格时,将所述线程数调整为所述线程池规格允许的最大线程数。
从以上描述可以看出,根据配置文件中的配置信息和偏移值获取进行数据查询的线程和每个线程要查询的主键区间,分数据段、多线程的查询数据,数据查询效率高、稳定性好;每次执行数据查询任务,均通过负载均衡原则选取业务服务集群中的某台业务服务器执行该任务,使得数据查询任务被均匀分配到各业务服务器,避免了某台业务服务器负载过高的问题;通过将每次数据查询后的主键的偏移值更新到配置文件,可清楚地获知数据查询任务的执行进度;通过在配置文件中设定加强执行时间区间和线程池规格,合理的利用了空闲资源。
图4示出了可以应用本发明实施例的处理实时消息的方法或处理实时消息的***的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所产生的点击事件提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的点击数据、文本内容等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本申请实施例所提供的数据查询方法一般由服务器405执行,相应地,数据查询***一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种数据查询方法。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种数据查询方法。
下面参考图5,其示出了适用于来实现本发明实施例的电子设备的计算机***500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有计算机***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括文件查询模块、确定模块和数据查询模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,文件查询模块还可以被描述为“获查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。
从以上描述可以看出,根据配置文件中的配置信息和偏移值获取进行数据查询的线程和每个线程要查询的主键区间,分数据段、多线程的查询数据,数据查询效率高、稳定性好;每次执行数据查询任务,均通过负载均衡原则选取业务服务集群中的某台业务服务器执行该任务,使得数据查询任务被均匀分配到各业务服务器,避免了某台业务服务器负载过高的问题;通过将每次数据查询后的主键的偏移值更新到配置文件,可清楚地获知数据查询任务的执行进度;通过在配置文件中设定加强执行时间区间和线程池规格,合理的利用了空闲资源。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种数据查询方法,其特征在于,包括:
查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;
根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;
每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。
2.根据权利要求1所述的方法,其特征在于,所述根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间,包括:
根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数;其中,所述配置信息包括所述总数据条数和所述限制查询数据条数;
根据所述线程数从线程池获取对应数量的线程;
根据所述偏移值和所述限制查询数据条数,获取每个线程查询的主键区间。
3.根据权利要求1所述的方法,其特征在于,所述查询配置文件的步骤之前,还包括:接收根据执行频率和负载均衡原则分配的数据查询任务。
4.根据权利要求2所述的方法,其特征在于,所述查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值的步骤之后以及所述根据所述配置信息和偏移值的步骤之前,还包括:
根据所述配置文件确认无需退出当前数据查询时,根据所述总数据条数更新所述偏移值;
将更新值作为下一次数据查询的主键的偏移值,并保存在所述配置文件中。
5.根据权利要求2所述的方法,其特征在于,所述根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数的步骤之后以及所述根据所述线程数从线程池获取对应数量的线程的步骤之前,还包括:
根据加强执行时间区间和非加强执行时间区间的线程池规格,获取当前数据查询所使用的线程池规格;其中,所述配置信息中包括带有线程池规格的所述加强执行时间区间和所述非加强执行时间区间的线程池规格,所述线程池规格为线程池中最多能够同时执行的线程数;
确认所述线程数超出所述线程池规格时,将所述线程数调整为所述线程池规格允许的最大线程数。
6.一种数据查询***,其特征在于,包括:
文件查询模块,用于查询配置文件,以获取配置信息和待查询目标文件的主键的偏移值;
确定模块,用于根据所述配置信息和偏移值,获取进行数据查询所需的线程,以确定每个线程查询的主键区间;
数据查询模块,用于每个线程根据对应的主键区间和预设查询条件分别对所述待查询目标文件进行数据查询。
7.根据权利要求6所述的***,其特征在于,所述确定模块,还用于:根据需要查询的总数据条数和每个线程的限制查询数据条数,获取进行数据查询所需的线程数;其中,所述配置信息包括所述总数据条数和所述限制查询数据条数;
根据所述线程数从线程池获取对应数量的线程;以及
根据所述偏移值和所述限制查询数据条数,获取每个线程查询的主键区间。
8.根据权利要求6所述的***,其特征在于,所述***还包括:接收模块,用于接收根据执行频率和负载均衡原则分配的数据查询任务。
9.根据权利要求7所述的***,其特征在于,所述***还包括:更新模块,用于根据所述配置文件确认无需退出当前数据查询时,根据所述总数据条数更新所述偏移值;以及
将更新值作为下一次数据查询的主键的偏移值,并保存在所述配置文件中。
10.根据权利要求7所述的***,其特征在于,所述***还包括:调整模块,用于根据加强执行时间区间和非加强执行时间区间的线程池规格,获取当前数据查询所使用的线程池规格;其中,所述配置信息中包括带有线程池规格的所述加强执行时间区间和所述非加强执行时间区间的线程池规格,所述线程池规格为线程池中最多能够同时执行的线程数;以及
确认所述线程数超出所述线程池规格时,将所述线程数调整为所述线程池规格允许的最大线程数。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711160500.1A CN110019339B (zh) | 2017-11-20 | 2017-11-20 | 一种数据查询方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711160500.1A CN110019339B (zh) | 2017-11-20 | 2017-11-20 | 一种数据查询方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019339A true CN110019339A (zh) | 2019-07-16 |
CN110019339B CN110019339B (zh) | 2021-11-30 |
Family
ID=67186777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711160500.1A Active CN110019339B (zh) | 2017-11-20 | 2017-11-20 | 一种数据查询方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019339B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781215A (zh) * | 2019-10-21 | 2020-02-11 | 爱钱进(北京)信息科技有限公司 | 数据的查询方法、装置以及存储介质 |
CN110825732A (zh) * | 2019-09-20 | 2020-02-21 | 广州亚美信息科技有限公司 | 数据查询方法、装置、计算机设备和可读存储介质 |
CN110825953A (zh) * | 2019-11-12 | 2020-02-21 | 上海德启信息科技有限公司 | 数据查询方法、装置和设备 |
CN111159521A (zh) * | 2019-12-12 | 2020-05-15 | 中国平安财产保险股份有限公司 | 数据查询方法、***、计算机设备和存储介质 |
CN112070469A (zh) * | 2020-09-01 | 2020-12-11 | 中国联合网络通信集团有限公司 | 业务办理时长优化方法、***、终端设备及存储介质 |
CN112612827A (zh) * | 2020-12-25 | 2021-04-06 | 平安国际智慧城市科技股份有限公司 | 数据库分页查询方法、装置、计算机设备及存储介质 |
CN112685427A (zh) * | 2021-01-25 | 2021-04-20 | 拉卡拉支付股份有限公司 | 数据接入方法、装置、电子设备及存储介质 |
CN112769880A (zh) * | 2019-11-01 | 2021-05-07 | 腾讯科技(深圳)有限公司 | 属性查询方法、装置、存储介质和计算机设备 |
CN113704577A (zh) * | 2021-09-09 | 2021-11-26 | 北京天融信网络安全技术有限公司 | 基于多线程并发处理的数据查询方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其*** |
CN101938396A (zh) * | 2009-06-30 | 2011-01-05 | 华为技术有限公司 | 数据流控制方法及装置 |
CN101996067A (zh) * | 2009-08-19 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种数据导出的方法和装置 |
CN102054000A (zh) * | 2009-10-28 | 2011-05-11 | ***通信集团公司 | 数据查询方法、装置及*** |
CN102122252A (zh) * | 2011-03-14 | 2011-07-13 | 华中科技大学 | 一种保证时间连续性的线程池设计方法 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理*** |
CN103678520A (zh) * | 2013-11-29 | 2014-03-26 | 中国科学院计算技术研究所 | 一种基于云计算的多维区间查询方法及其*** |
CN106383826A (zh) * | 2015-07-29 | 2017-02-08 | 阿里巴巴集团控股有限公司 | 数据库查询方法和装置 |
CN106528362A (zh) * | 2015-09-10 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种流量隔离方法及装置 |
CN106776829A (zh) * | 2016-11-28 | 2017-05-31 | 成都广达新网科技股份有限公司 | 一种数据导出***及其工作方法 |
-
2017
- 2017-11-20 CN CN201711160500.1A patent/CN110019339B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其*** |
CN101938396A (zh) * | 2009-06-30 | 2011-01-05 | 华为技术有限公司 | 数据流控制方法及装置 |
CN101996067A (zh) * | 2009-08-19 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种数据导出的方法和装置 |
CN102054000A (zh) * | 2009-10-28 | 2011-05-11 | ***通信集团公司 | 数据查询方法、装置及*** |
CN102122252A (zh) * | 2011-03-14 | 2011-07-13 | 华中科技大学 | 一种保证时间连续性的线程池设计方法 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理*** |
CN103678520A (zh) * | 2013-11-29 | 2014-03-26 | 中国科学院计算技术研究所 | 一种基于云计算的多维区间查询方法及其*** |
CN106383826A (zh) * | 2015-07-29 | 2017-02-08 | 阿里巴巴集团控股有限公司 | 数据库查询方法和装置 |
CN106528362A (zh) * | 2015-09-10 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种流量隔离方法及装置 |
CN106776829A (zh) * | 2016-11-28 | 2017-05-31 | 成都广达新网科技股份有限公司 | 一种数据导出***及其工作方法 |
Non-Patent Citations (2)
Title |
---|
Y YASUI 等: "Fast and scalable NUMA-based thread parallel breadth-first search", 《2015 INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING & SIMULATION (HPCS)》 * |
陈宬: "私有云存储***元数据管理模块的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825732A (zh) * | 2019-09-20 | 2020-02-21 | 广州亚美信息科技有限公司 | 数据查询方法、装置、计算机设备和可读存储介质 |
CN110781215A (zh) * | 2019-10-21 | 2020-02-11 | 爱钱进(北京)信息科技有限公司 | 数据的查询方法、装置以及存储介质 |
CN112769880A (zh) * | 2019-11-01 | 2021-05-07 | 腾讯科技(深圳)有限公司 | 属性查询方法、装置、存储介质和计算机设备 |
CN112769880B (zh) * | 2019-11-01 | 2022-09-16 | 腾讯科技(深圳)有限公司 | 属性查询方法、装置、存储介质和计算机设备 |
CN110825953A (zh) * | 2019-11-12 | 2020-02-21 | 上海德启信息科技有限公司 | 数据查询方法、装置和设备 |
CN110825953B (zh) * | 2019-11-12 | 2024-03-22 | 上海德启信息科技有限公司 | 数据查询方法、装置和设备 |
CN111159521A (zh) * | 2019-12-12 | 2020-05-15 | 中国平安财产保险股份有限公司 | 数据查询方法、***、计算机设备和存储介质 |
CN111159521B (zh) * | 2019-12-12 | 2024-04-30 | 中国平安财产保险股份有限公司 | 数据查询方法、***、计算机设备和存储介质 |
CN112070469B (zh) * | 2020-09-01 | 2023-06-13 | 中国联合网络通信集团有限公司 | 业务办理时长优化方法、***、终端设备及存储介质 |
CN112070469A (zh) * | 2020-09-01 | 2020-12-11 | 中国联合网络通信集团有限公司 | 业务办理时长优化方法、***、终端设备及存储介质 |
CN112612827A (zh) * | 2020-12-25 | 2021-04-06 | 平安国际智慧城市科技股份有限公司 | 数据库分页查询方法、装置、计算机设备及存储介质 |
CN112685427A (zh) * | 2021-01-25 | 2021-04-20 | 拉卡拉支付股份有限公司 | 数据接入方法、装置、电子设备及存储介质 |
CN112685427B (zh) * | 2021-01-25 | 2024-03-26 | 拉卡拉支付股份有限公司 | 数据接入方法、装置、电子设备及存储介质 |
CN113704577A (zh) * | 2021-09-09 | 2021-11-26 | 北京天融信网络安全技术有限公司 | 基于多线程并发处理的数据查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110019339B (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019339A (zh) | 一种数据查询方法和*** | |
CN109684358A (zh) | 数据查询的方法和装置 | |
US20130262891A1 (en) | Method and system for managing power of a mobile device | |
CN108897854A (zh) | 一种超时任务的监控方法和装置 | |
CN108984370A (zh) | 一种确定监控阈值的方法和装置 | |
CN110351323A (zh) | 一种应用***的参数管理方法和装置 | |
CN108696374A (zh) | 更新客户端配置的方法和装置 | |
CN110377416A (zh) | 分布式分区任务调度方法和装置 | |
CN102760074A (zh) | 高负荷业务流程可扩展性 | |
CN109879126B (zh) | 一种电梯预约的方法和*** | |
CN109840142A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN109905286A (zh) | 一种监控设备运行状态的方法和*** | |
CN108510081A (zh) | 机器学***台 | |
CN110348771A (zh) | 一种对订单进行组单的方法和装置 | |
CN110166507A (zh) | 多资源调度方法和装置 | |
CN108932157A (zh) | 分布式处理任务的方法、***、电子设备和可读介质 | |
CN110334036A (zh) | 一种实现缓存数据调度的方法和装置 | |
CN109725988A (zh) | 一种任务调度方法和装置 | |
CN110019539A (zh) | 一种数据仓库的数据同步的方法和装置 | |
CN109413125A (zh) | 动态调节分布式***资源的方法和装置 | |
CN111597033A (zh) | 一种任务调度方法和装置 | |
CN109428926A (zh) | 一种调度任务节点的方法和装置 | |
CN109840141A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN113485806A (zh) | 处理任务的方法、装置、设备和计算机可读介质 | |
CN110321252A (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 |