基于多线程并发处理的数据查询方法及装置与流程

文档序号:27632474发布日期:2021-11-29 16:30阅读:304来源:国知局
基于多线程并发处理的数据查询方法及装置与流程

1.本技术涉及数据查询技术领域,特别涉及一种基于多线程并发处理的数据查询方法及装置。


背景技术:

2.随着数据库相关技术的发展,一些常规的检索引擎通过支持分布式部署、分片计算及全文检索等功能,基本能够很好的满足普通用户的常规数据查询需求。但在面对大数据量是这类常规的检索引擎在大数据量查询,特别是单次查询的数据量较大时,仍然存在查询速度较慢的技术问题。


技术实现要素:

3.有鉴于现有技术中存在的上述问题,本技术提供了一种基于多线程并发处理的数据查询方法及装置,本技术实施例采用的技术方案如下:
4.一种基于多线程并发处理的数据查询方法,包括:
5.获取用于请求查询数据的第一查询请求,所述第一查询请求包括查询条件;
6.确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围;
7.基于并发处理的线程数量将所述总时间范围平均划分为多个第一时间范围;
8.确定实际分布于各所述第一时间范围内的待查询数据的第一条数,以及所述第一时间范围内的待查询数据的平均条数;
9.判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件,其中,所述第一条件表征待查询数据在总时间范围内分布均匀;
10.如果符合,则分别基于各所述第一时间范围创建多个第一查询任务,通过多个线程并发处理多个所述第一查询任务,以获取查询结果;
11.如果不符合,则将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,分别基于各所述第二时间范围创建多个第二查询任务,通过多个线程并发处理多个所述第二查询任务,以获取查询结果。
12.在一些实施例中,所述确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围,包括:
13.基于所述查询条件向数据库发送第二查询请求;
14.接收所述数据库的反馈信息,所述反馈信息至少包括所述总条数、所述总时间范围,以及实际分布于所述总时间范围中各个单位时间范围内的待查询数据的第二条数。
15.在一些实施例中,所述将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,包括:
16.按时间顺序依次叠加多个所述单位时间范围,并在相对应的多个所述第二条数之和与所述平均条数相符时,将多个所述单位时间范围叠加形成的时间范围确定为所述第二时间范围。
17.在一些实施例中,所述判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件,包括:
18.确定各所述第一条数和所述平均条数之间的差值;
19.在任一所述第一条数和所述平均条数之间的差值大于第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系不符合所述第一条件;
20.在各所述第一条数和所述平均条数之间的差值均小于所述第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系符合所述第一条件。
21.在一些实施例中,所述方法还包括:
22.对获取的查询结果进行汇总,并将汇总后的查询结果反馈给发送所述第一查询请求的用户终端。
23.一种数据查询装置,包括:
24.获取模块,用于获取用于请求查询数据的第一查询请求,所述第一查询请求包括查询条件;
25.第一确定模块,用于确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围;
26.划分模块,用于基于并发处理的线程数量将所述总时间范围平均划分为多个第一时间范围;
27.第二确定模块,用于确定实际分布于各所述第一时间范围内的待查询数据的第一条数,以及所述第一时间范围内的待查询数据的平均条数;
28.判断模块,用于判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件,其中,所述第一条件表征待查询数据在总时间范围内分布均匀;
29.第一查询模块,用于在所述第一条数和所述平均条数之间的数值关系符合所述第一条件的情况下,分别基于各所述第一时间范围创建多个第一查询任务,通过多个线程并发处理多个所述第一查询任务,以获取查询结果;
30.第二查询模块,用于在所述第一条数和所述平均条数之间的数值关系不符合所述第一条件的情况下,将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,分别基于各所述第二时间范围创建多个第二查询任务,通过多个线程并发处理多个所述第二查询任务,以获取查询结果。
31.在一些实施例中,所述第一确定模块具体用于:
32.基于所述查询条件向数据库发送第二查询请求;
33.接收所述数据库的反馈信息,所述反馈信息至少包括所述总条数、所述总时间范围,以及实际分布于所述总时间范围中各个单位时间范围内的待查询数据的第二条数。
34.在一些实施例中,所述第二查询模块具体用于:
35.按时间顺序依次叠加多个所述单位时间范围,并在相对应的多个所述第二条数之和与所述平均条数相符时,将多个所述单位时间范围叠加形成的时间范围确定为所述第二时间范围。
36.在一些实施例中,所述判断模块具体用于:
37.确定各所述第一条数和所述平均条数之间的差值;
38.在任一所述第一条数和所述平均条数之间的差值大于第一阈值的情况下,确定所
述第一条数和所述平均条数之间的数值关系不符合所述第一条件;
39.在各所述第一条数和所述平均条数之间的差值均小于所述第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系符合所述第一条件。
40.在一些实施例中,所述装置还包括:
41.反馈模块,用于对获取的查询结果进行汇总,并将汇总后的查询结果反馈给发送所述第一查询请求的用户终端。
42.本技术实施例的基于多线程并发处理的数据查询方法,通过判断第一数据和平均数据之间的数值关系是否符合第一条件,能够判断待查询数据在时序上分布是否有明显的数据倾斜,如果不存在明显的数据倾斜,则按照时间均分法创建多个第一查询任务,通过多个线程并行处理多个第一查询任务,如果不存在明显的数据倾斜,则按照条数均分法创建多个第二查询任务,通过多个线程并行处理多个第二查询任务,能够实现多个线程并发且同步的进行数据查询的目的,查询效率较高,查询时间较短。
附图说明
43.图1为本技术实施例的数据查询方法的流程图;
44.图2为本技术实施例的数据查询方法的步骤s105的流程图;
45.图3为本技术实施例的数据查询方法的步骤s161和s162的场景示意图;
46.图4为本技术实施例的数据查询装置的结构框图;
47.图5为本技术实施例的电子设备的结构框图。
具体实施方式
48.此处参考附图描述本技术的各种方案以及特征。
49.应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本技术的范围和精神内的其他修改。
50.包含在说明书中并构成说明书的一部分的附图示出了本技术的实施例,并且与上面给出的对本技术的大致描述以及下面给出的对实施例的详细描述一起用于解释本技术的原理。
51.通过下面参照附图对给定为非限制性实例的实施例的可选形式的描述,本技术的这些和其它特性将会变得显而易见。
52.还应当理解,尽管已经参照一些具体实例对本技术进行了描述,但本领域技术人员能够确定地实现本技术的很多其它等效形式。
53.当结合附图时,鉴于以下详细说明,本技术的上述和其他方面、特征和优势将变得更为显而易见。
54.此后参照附图描述本技术的具体实施例;然而,应当理解,所申请的实施例仅仅是本技术的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本技术模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本技术。
55.本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本技术的相同或不同实施例中的一个或多个。
56.图1为本技术实施例的基于多线程并发处理的数据查询方法的流程图,参见图1所示,本技术实施例的基于多线程并发处理的数据查询方法具体可包括如下步骤:
57.s101,获取用于请求查询数据的第一查询请求,所述第一查询请求包括查询条件。
58.其中,第一查询请求可为用户终端向数据查询装置发送的查询请求,也可为从其他位置获取的查询请求。该第一查询请求中包括查询条件,该查询条件可包括例如数据类型、时间和/或存储地址等。
59.s102,确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围。
60.在获取到查询条件的情况下,可基于该查询条件,确定符合该查询条件的待查询数据的总条数,以及符合查询条件的待查询数据的总时间范围。例如,在查询日式文件的情况下,可基于查询条件确定符合该查询条件的日志文件的总条数,以及符合查询条件的日志文件的起止时间。
61.在一个具体实施例中,所述确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围,包括:
62.基于所述查询条件向数据库发送第二查询请求;
63.接收所述数据库的反馈信息,所述反馈信息至少包括所述总条数、所述总时间范围,以及实际分布于所述总时间范围中各个单位时间范围内的待查询数据的第二条数。
64.也即,在获取到查询条件的情况下,可基于该查询条件向数据库发送第二查询请求,以请求数据库执行预查询操作,查询符合查询条件的总条数、总时间范围,以及实际分布于各个单位时间范围内的待查询数据的第二条数。例如,总时间范围为24小时的情况下,该单位时间范围可为10分钟、半个小时或一个小时。也即,在确定总条数的同时,还分别确定实际分布与各个单位时间范围内的待查询数据的条数。
65.当然,该总时间范围不仅限于通过预查询操作来确定,该总时间范围也可作为一个查询条件,从第一查询请求中获取。
66.s103,基于并发处理的线程数量将所述总时间范围平均划分为多个第一时间范围。
67.该并发处理的线程数量可以是最大的并发处理的线程数量。例如,在基于线程池执行多线程并发处理任务时,可获取该线程池所能够提供的最大线程数。将总时间范围按照该最大线程数平均划分。如在最大线程数为10的情况下,可将该总时间范围平均划分为10个第一时间范围,该第一时间范围也即子时间范围。
68.s104,确定实际分布于各所述第一时间范围内的待查询数据的第一条数,以及所述第一时间范围内的待查询数据的平均条数。
69.实际分布于各第一时间范围内的待查询数据的第一条数,可通过多种方式获取。如在一个具体实施例中,在确定各个第一时间范围的情况下,可基于第一时间范围向数据库发送第三查询请求,获取数据库的另一反馈信息,该另一范围信息可包括实际分布于第一时间范围内的待查询数据的第一条数。
70.在另一个具体实施例中,如果已经确定总时间范围中各个单位时间范围内的待查询数据的第二条数,可基于该第二条数,确定各个第一时间范围内实际分布的待查询数据
的第一条数。例如,在第一时间范围为1个小时,单位时间范围10分钟的情况下,只需一次叠加6个单位时间范围的第二条数就可以获取到一个第一时间范围的第一条数。当然,在实际应用时,也可通过其他方式确定第一条数。
71.关于平均条数,在已确定所划分的第一时间范围的个数,以及总条数的情况下,可基于这两个参数进行求平均运算,即可获取到平均条数。
72.s105,判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件。
73.其中,所述第一条件表征待查询数据在总时间范围内分布均匀。需要说明的是,所述分布均匀并非指绝对的按照等时间间隔平均分布,应理解为符合查询条件的待查询数据在时序上基本属于均匀分布,没有明显的大量的待查询数据聚集于某一较短的时间范围内。
74.在获取到第一条数和平均条数的情况下,分别确定各个第一条数和平均条数之间的数值关系是否符合第一条件,只有在全部的第一条数与平均条数之间额数值关系均符合第一条件的情况下,才确定待查询数据分布均匀,没有明显的数据倾斜,第一条数和平均条数之间的数值关系符合第一条件。在任意一个第一条数与平均条数之间的数值关系不符合第一条件的情况下,即确定待查询数据分布不均匀,存在明显的数据倾斜,第一条数和平均条数之间的数值关系不符合第一条件。
75.s161,如果符合,则分别基于各所述第一时间范围创建多个第一查询任务,通过多个线程并发处理多个所述第一查询任务,以获取查询结果。
76.也即,待查询数据在时序上分布均衡,没有明显的数据倾斜的情况下,基于各第一时间范围创建多个第一查询任务,这样每个第一查询任务包含第一条数的待查询数据,而各个第一条数基本相同,所形成的第一查询任务的数量与并行处理的线程数量一致,通过多个线程并发处理多个第一查询任务,以获取查询结果,如图3所示,能够真正的做到多线程并发进行数据查询,能够显著提高查询效率,缩短查询数据的时间。可选的,可基于例如java线程池中的多个线程并发处理多个第一查询任务,并对每个第一查询任务进行管理。
77.s162,如果不符合,则将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,分别基于各所述第二时间范围创建多个第二查询任务,通过多个线程并发处理多个所述第二查询任务,以获取查询结果。
78.当待查询数据在时序上分布不均衡,有明显的数据倾斜的情况下,如果仍显基于第一时间范围创先查询任务,就会出现个别线程闲置,而其他线程任务量又较大,并不能够有效的提高查询效率。所以,在确定存在明显的数据倾斜的情况下,可基于平均条数将总时间范围重新划分为多个第二时间范围,每个第二时间范围所包含的待查询数据的条数与平均条数基本一致,分别基于各个第二实现范围创建多个第二查询任务,则多个第二查询任务所包含的待查询数据的条数基本一致,通过多个线程并发处理多个第二查询任务,以获取查询结果,如图3所示,能够克服数据倾斜的问题,能够真正做到多线程并行进行数据查询,具有较高的查询效率,数据查询速度较快。
79.通过实践验证,以一次查询20万条数据为例,利用一个检索引擎执行该查询任务总耗时为754秒,而采用本技术实施例的数据查询方法,同样是查询该20万条数据,总耗时为149秒,查询效率提高约80%,能够显著提高查询效率,缩短查询时间。
80.本技术实施例的基于多线程并发处理的数据查询方法,通过判断第一数据和平均
数据之间的数值关系是否符合第一条件,能够判断待查询数据在时序上分布是否有明显的数据倾斜,如果不存在明显的数据倾斜,则按照时间均分法创建多个第一查询任务,通过多个线程并行处理多个第一查询任务,如果不存在明显的数据倾斜,则按照条数均分法创建多个第二查询任务,通过多个线程并行处理多个第二查询任务,能够实现多个线程并发且同步的进行数据查询的目的,查询效率较高,查询时间较短。
81.配合图1所示,在一些实施例中,所述方法还包括:
82.s107,对获取的查询结果进行汇总,并将汇总后的查询结果反馈给发送所述第一查询请求的用户终端。
83.在具体实施过程中,可能出现两种查询结果,一种结果为获取到待查询数据,另一种结果为出现异常情况,根据配置的重试次数上限重新执行查询任务,且重试次数达到配置的重试次数上限,对该异常情况进行记录,也作为一种查询结果。
84.在全部第一查询任务或第二查询任务执行完成的情况下,对全部查询结果进行汇总,包括获取到的查询数据和异常情况记录,将汇总的查询结果反馈给用户终端。
85.配合图2所示,在一些实施例中,所述判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件,包括:
86.确定各所述第一条数和所述平均条数之间的差值;
87.在任一所述第一条数和所述平均条数之间的差值大于第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系不符合所述第一条件;
88.在各所述第一条数和所述平均条数之间的差值均小于所述第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系符合所述第一条件。
89.在具体实施时,第一条数可能大于平均条数,也可能小于平均条数,在第一条数大于平均条数是,可通过该第一条数减去平均条数,在第一条数小于平均条数时,可通过平均条数减去该第一条数。也即,第一条数和平均条数之间的差值应理解为绝对值。
90.第一阈值是表征待查询数据在时序上分布存在数据倾斜的阈值,当任意一个第一条数和平均条数之间的差值大于该第一阈值,至少表明相应的第一时间范围内的待查询数据分布不均衡,可能是包含较多的待查询数据,也可能是包含较好的待查询数据。只要出现上述情况,即确定存在数据倾斜。当所有的第一条数和平均条数之间的差值均小于第一阈值时,则表明全部的第一时间范围内的待查询数据的条数,均与平均条数差距较小,数据分布均衡,不存在明显的数据倾斜。
91.当然,在实际应用时,不仅限于通过差值判断第一条数和平均条数之间的数值关系是否符合第一条件,也可通过例如比例或其他数值关系,来确定第一条数和平均数之间的数值关系是否符合第一条件。也即,第一条件不仅限于基于差值所配置的第一阈值,也可为基于例如比例所配置的另一阈值,或者基于其他数值关系所配置的其他阈值。
92.在一些实施例中,所述将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,包括:
93.按时间顺序依次叠加多个所述单位时间范围,并在相对应的多个所述第二条数之和与所述平均条数相符时,将多个所述单位时间范围叠加形成的时间范围确定为所述第二时间范围。
94.也即,在确定了各个单位时间范围内的待查询数据的第二条数的情况下,可依次
叠加多个单位时间范围的第二条数,直至第二条数之和与平均条数相符时,将该多个单位时间范围叠加形成的时间范围确定为第二时间范围。所述相符不应理解为第二条数之和与平均条数完全一致,应理解为第二条数之和与平均条数接近,或第二条数之和与平均条数之间的差值小于第二阈值。该第二阈值与第一阈值可以相同,也可以不同。
95.例如,在总时间范围为从某一日的00:00至24:00,单位时间范围为10分钟的情况下,则将00:00

00:10、00:10

00:20、00:20

00:30
……
,直至第二条数之和与平均条数之间的差值小于第二阈值,如直至叠加值01:30,第二条数之和才与平均条数之间的差值小于第二阈值,则将00:00

01:30确定首个第二时间范围,下一个第二时间范围的起始时间即为01:30,依次类推,直至总时间范围划分完成。如此,能够保证各个第二查询任务所包含的待查询数据的条数基本一致。
96.参见图4所示,本技术实施例还提供了一种基于多线程并发处理的数据查询装置,包括:
97.获取模块201,用于获取用于请求查询数据的第一查询请求,所述第一查询请求包括查询条件;
98.第一确定模块202,用于确定符合所述查询条件的待查询数据的总条数,以及分布的总时间范围;
99.划分模块203,用于基于并发处理的线程数量将所述总时间范围平均划分为多个第一时间范围;
100.第二确定模块204,用于确定实际分布于各所述第一时间范围内的待查询数据的第一条数,以及所述第一时间范围内的待查询数据的平均条数;
101.判断模块205,用于判断所述第一条数和所述平均条数之间的数值关系是否符合第一条件,其中,所述第一条件表征待查询数据在总时间范围内分布均匀;
102.第一查询模块261,用于在所述第一条数和所述平均条数之间的数值关系符合所述第一条件的情况下,分别基于各所述第一时间范围创建多个第一查询任务,通过多个线程并发处理多个所述第一查询任务,以获取查询结果;
103.第二查询模块262,用于在所述第一条数和所述平均条数之间的数值关系不符合所述第一条件的情况下,将所述总时间范围重新划分为多个分别包含所述平均条数的待查询数据的第二时间范围,分别基于各所述第二时间范围创建多个第二查询任务,通过多个线程并发处理多个所述第二查询任务,以获取查询结果。
104.在一些实施例中,所述第一确定模块202具体用于:
105.基于所述查询条件向数据库发送第二查询请求;
106.接收所述数据库的反馈信息,所述反馈信息至少包括所述总条数、所述总时间范围,以及实际分布于所述总时间范围中各个单位时间范围内的待查询数据的第二条数。
107.在一些实施例中,所述第二查询模块262具体用于:
108.按时间顺序依次叠加多个所述单位时间范围,并在相对应的多个所述第二条数之和与所述平均条数相符时,将多个所述单位时间范围叠加形成的时间范围确定为所述第二时间范围。
109.在一些实施例中,所述判断模块205具体用于:
110.确定各所述第一条数和所述平均条数之间的差值;
111.在任一所述第一条数和所述平均条数之间的差值大于第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系不符合所述第一条件;
112.在各所述第一条数和所述平均条数之间的差值均小于所述第一阈值的情况下,确定所述第一条数和所述平均条数之间的数值关系符合所述第一条件。
113.在一些实施例中,所述装置还包括:
114.反馈模块,用于对获取的查询结果进行汇总,并将汇总后的查询结果反馈给发送所述第一查询请求的用户终端。
115.参见图5所示,本技术实施例还提供了一种电子设备,至少包括存储器301和处理器302,所述存储器301上存储有程序,所述处理器302在执行所述存储器301上的程序时实现如上任一实施例所述的数据查询方法。
116.本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,在执行所述计算机可读存储介质中的所述计算机可执行指令时实现如上任一实施例所述的数据查询方法。
117.本领域技术人员应明白,本技术的实施例可提供为方法、电子设备、计算机可读存储介质或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。当通过软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
118.上述处理器可以是通用处理器、数字信号处理器、专用集成电路(application

specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field

programmable gate array,fpga),通用阵列逻辑(generic array logic,简称gal)或其任意组合。通用处理器可以是微处理器或者任何常规的处理器等。
119.上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
120.上述可读存储介质可为磁碟、光盘、dvd、usb、只读存储记忆体(rom)或随机存储记忆体(ram)等,本技术对具体的存储介质形式不作限定。
121.以上实施例仅为本技术的示例性实施例,不用于限制本技术,本技术的保护范围由权利要求书限定。本领域技术人员可以在本技术的实质和保护范围内,对本技术做出各种修改或等同替换,这种修改或等同替换也应视为落在本技术的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1