本技术涉及数据处理,特别涉及一种sql查询加速的方法及装置。
背景技术:
1、麒麟kylin是一个解决tb级别数据的数据分析模型,用于实现多维在线分析处理molap(multidimensional onine analytical processing)。kylin基于多维数据集,使用多维数组存储多维数据,需要大量的存储空间。多维数据在存储过程中形成cube结构,被存储在hbase中。kyin通过预计算来预先存储所有需要查询的结果,用户查询时不再扫描原始数据,可以做到秒或亚秒级查询,使大数据分析快速而简洁。
2、现有技术中,下压查询sql(结构化查询语言,structured query language)或查询时间较长的sql称为慢sql。针对kylin模型的慢sql加速问题,需要开发人员根据每张仪表板中查询的不同业务场景,去取出拼接的不同结构化查询语言sql(structured querylanguage)语句。其操作步骤固定、繁琐、耗时且重复。并且,往往要求开发人员对kylin的优化过程很熟悉,这对开发人员有一定的技术门槛要求。因此,如何简单、高效、自动化地加速kylin模型的sql查询过程,成为了一个亟需解决的问题。
技术实现思路
1、基于上述问题,本技术提供了一种sql查询加速的方法及装置,以简单、高效、自动化地加速kylin模型的sql查询过程。
2、本技术公开了一种sql查询加速的方法,所述方法包括:
3、获取目标sql语句;
4、当存在模型与所述目标sql语句匹配时,针对所述目标sql语句获取优化建议;所述优化建议包括加速索引信息和所述模型的模型信息;
5、根据所述加速索引信息生成加速索引,并将所述模型信息保存至本地缓存;
6、根据所述加速索引,刷新本地缓存中的所述模型信息,以利用所述加速索引实现所述目标sql语句的查询加速。
7、可选的,所述获取目标sql语句,包括:
8、从初始sql语句中选择慢sql语句;
9、对所述慢sql语句进行非空校验、条数限制校验和非kylin数据源校验;
10、将通过校验的慢sql语句按照kylin加速要求进行拼接;
11、调用kylin的sql格式化接口,对拼接后的慢sql语句进行格式化处理,得到所述目标sql语句。
12、可选的,所述对所述慢sql语句进行非空校验、条数限制校验和非kylin数据源校验,包括:
13、当所述慢sql语句不为空时,所述慢sql语句通过所述非空校验;
14、当所述慢sql语句少于预设条数时,所述慢sql语句通过所述条数限制校验;
15、当所述慢sql语句的数据源为kylin时,所述慢sql语句通过所述非kylin数据源校验。
16、可选的,所述根据所述加速索引信息生成加速索引,包括:
17、调用kylin的加速索引接口,生成所述加速索引;
18、当调用所述加速索引接口失败时,将所述目标sql语句的状态改为加速失败,停止对所述目标sql语句进行加速。
19、可选的,所述刷新本地缓存中的所述模型信息,包括:
20、调用kylin的片段接口,更新所述模型信息;
21、当更新成功时,将所述目标sql语句的状态改为加速成功;
22、当更新失败时,将所述目标sql语句的状态改为加速失败。
23、可选的,在获取目标sql语句后,所述方法还包括:
24、调用kylin的加速模型接口,判断是否存在模型与所述目标sql语句匹配;
25、当不存在所述模型与所述目标sql语句匹配时,则提示存在未构建kylin模型的数据表,请求对所述数据表生成kylin模型。
26、可选的,在针对所述目标sql语句获取优化建议后,所述方法还包括:
27、判断所述优化建议中的所述加速索引信息是否为空;
28、若所述加速索引信息为空,则将所述目标sql语句的状态改为已存在最优索引,停止对所述目标sql语句进行加速。
29、可选的,在实现所述目标sql语句的查询加速后,所述方法还包括:
30、展示所述目标sql语句加速后前的查询时间和加速后的查询时间;
31、将所述加速后前的查询时间与所述加速后的查询时间的差值,作为查询提升时间,并展示。
32、基于上述一种sql查询加速的方法,本技术还公开了一种sql查询加速的装置,包括:目标语句获取单元、优化建议获取单元、加速索引生成单元和加速单元;
33、所述目标语句获取单元,用于获取目标sql语句;
34、所述优化建议获取单元,用于当存在模型与所述目标sql语句匹配时,针对所述目标sql语句获取优化建议;所述优化建议包括加速索引信息和所述模型的模型信息;
35、所述加速索引生成单元,用于根据所述加速索引信息生成加速索引,并将所述模型信息保存至本地缓存;
36、所述加速单元,用于根据所述加速索引,刷新本地缓存中的所述模型信息,以利用所述加速索引实现所述目标sql语句的查询加速。
37、可选的,所述目标语句获取单元,包括:
38、慢sql语句获取子单元,用于从初始sql语句中选择慢sql语句;
39、校验子单元,用于对所述慢sql语句进行非空校验、条数限制校验和非kylin数据源校验;
40、拼接子单元,用于将通过校验的慢sql语句按照kylin加速要求进行拼接;
41、格式化子单元,用于调用kylin的sql格式化接口,对拼接后的慢sql语句进行格式化处理,得到所述目标sql语句。
42、可选的,所述校验子单元,包括:
43、非空校验子单元,用于当所述慢sql语句不为空时,所述慢sql语句通过所述非空校验;
44、条数校验子单元,用于当所述慢sql语句少于预设条数时,所述慢sql语句通过所述条数限制校验;
45、数据源校验子单元,用于当所述慢sql语句的数据源为kylin时,所述慢sql语句通过所述非kylin数据源校验。
46、可选的,所述加速索引生成单元,包括:
47、加速索引生成子单元,用于调用kylin的加速索引接口,生成所述加速索引;
48、接口调用失败子单元,用于当调用所述加速索引接口失败时,将所述目标sql语句的状态改为加速失败,停止对所述目标sql语句进行加速。
49、可选的,所述加速单元,包括:
50、更新子单元,用于调用kylin的片段接口,更新所述模型信息;
51、更新成功子单元,用于当更新成功时,将所述目标sql语句的状态改为加速成功;
52、更新失败子单元,用于当更新失败时,将所述目标sql语句的状态改为加速失败。
53、可选的,在获取目标sql语句后,所述装置还包括:
54、模型判断单元,用于调用kylin的加速模型接口,判断是否存在模型与所述目标sql语句匹配;
55、模型请求单元,用于当不存在所述模型与所述目标sql语句匹配时,则提示存在未构建kylin模型的数据表,请求对所述数据表生成kylin模型。
56、可选的,在针对所述目标sql语句获取优化建议后,所述装置还包括:
57、优化建议判断单元,用于判断所述优化建议中的所述加速索引信息是否为空;
58、已有索引单元,用于若所述加速索引信息为空,则将所述目标sql语句的状态改为已存在最优索引,停止对所述目标sql语句进行加速。
59、可选的,在实现所述目标sql语句的查询加速后,所述装置还包括:
60、查询时间展示单元,用于展示所述目标sql语句加速后前的查询时间和加速后的查询时间;
61、提升时间展示单元,用于将所述加速后前的查询时间与所述加速后的查询时间的差值,作为查询提升时间,并展示。
62、本技术公开了一种sql查询加速的方法及装置。先获取目标sql语句,当存在模型与目标sql语句匹配时,针对目标sql语句获取包括加速索引信息和该模型的模型信息的优化建议。根据加速索引信息生成加速索引,并将模型信息保存至本地缓存,根据加速索引刷新模型信息,以利用加速索引实现目标sql语句的查询加速。简化了慢sql的处理流程,将固定、繁琐、耗时且重复的处理流程自动化,节省人力,提高了工作效率。降低了技术门槛,令对优化过程不熟悉的开发人员也能通过本技术的方法加速sql查询过程,从而简单、高效、自动化地加速sql查询过程。