System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据处理,具体而言,涉及一种数据库语句的调整方法及其装置、电子设备及存储介质。
技术介绍
1、数据倾斜是指在分布式集群中,数据分布中存在不均衡的情况,即某些节点的数据量远远超过其他节点的数据量。在大数据开发中,hive sql(即一种数据仓库工具)开发在整个的开发流程中占了很大一部分比重,而对hive sql语句进行优化更是需要一定的经验和思路,才能避免发生数据倾斜问题。然而,大多数的场景下,都是需要开发人员根据经验进行语句优化,无法进行自动化的问题检测及语句优化,不仅造成了集群计算资源的浪费,而且开发人员的开发效率较低。
2、针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本专利技术实施例提供了一种数据库语句的调整方法及其装置、电子设备及存储介质,以至少解决相关技术中无法自动对数据库语句进行问题检测以及调整,导致开发效率较低的技术问题。
2、根据本专利技术实施例的一个方面,提供了一种数据库语句的调整方法,包括:获取原始数据库语句集合,并对所述原始数据库语句集合中的每条原始数据库语句进行预处理,得到格式化语句集合;将所述格式化语句集合划分为单表语句集合和多表语句集合,其中,所述单表语句集合包括:多个单表语句,所述单表语句是在单张数据表中执行的语句,所述多表语句集合包括:多个多表语句,所述多表语句是在多张数据表中执行的语句;基于所述单表语句集合,判断是否产生多文件问题和/或数据膨胀问题,并在产生所述多文件问题和/或所述数据膨胀问题
3、进一步地,对所述原始数据库语句集合中的每条原始数据库语句进行预处理,得到格式化语句集合的步骤,包括:识别所述原始数据库语句集合中每个原始数据库语句的关键字、函数以及参数;对所述关键字、所述函数以及所述参数分别进行标注,得到所述格式化语句集合。
4、进一步地,在获取原始数据库语句集合之后,还包括:获取所述原始数据库语句集合对应的执行计划树、元数据信息和日志信息;基于所述执行计划树,确定所述原始数据库语句集合中每个原始数据库语句的执行顺序;基于所述元数据信息,确定每个所述原始数据库语句关联的数据表的表信息;基于所述日志信息,确定每个所述原始数据库语句的运行信息。
5、进一步地,基于所述单表语句集合,判断是否产生多文件问题和/或数据膨胀问题的步骤,包括:确定所述单表语句集合中第一预设单表语句的语句数量,其中,所述第一预设单表语句是包含第一预设字段的所述单表语句;从所述单表语句集合中筛选出第二预设单表语句集合,其中,所述第二预设单表语句集合中的每个第二预设单表语句是包含第二预设字段的所述单表语句;在所述语句数量大于预设合并阈值的情况下,确定产生所述多文件问题;在所述第二预设单表语句集合中存在关联的数据表的数据量大于预设数据阈值的所述第二预设单表语句的情况下,确定产生所述数据膨胀问题。
6、进一步地,在产生所述多文件问题和/或所述数据膨胀问题的情况下,调整所述单表语句集合的步骤,包括:将所述第一预设单表语句中的所述第一预设字段替换为第三预设字段,并在所有所述第一预设单表语句替换完成的情况下,合并所有所述第一预设单表语句,得到合并单表语句;在产生所述多文件问题的情况下,在所述合并单表语句的末尾加上第四预设字段;在产生所述数据膨胀问题的情况下,确定关联的所述数据表的所述数据量大于所述预设数据阈值的所述第二预设单表语句,并基于所述数据量以及所述数据表所在内存,确定拆解数量,将所述第二预设单表语句拆解成所述拆解数量个子语句。
7、进一步地,基于所述多表语句集合,判断是否产生数据倾斜问题的步骤,包括:对于所述多表语句集合中的每个多表语句,确定所述多表语句关联的数据表集合;将所述数据表集合中每张数据表都出现的字段确定为所述数据表的主键,并确定每张所述数据表对应的所述主键的主键类型以及主键值;基于所述主键类型,确定所述数据表的热点值;在所述数据表集合中存在所述主键值是空值的所述数据表和/或存在两张所述数据表的所述热点值之间的差值大于预设热点阈值的情况下,确定产生所述数据倾斜问题。
8、进一步地,在产生所述数据倾斜问题的情况下,调整所述多表语句集合的步骤,包括:在产生所述数据倾斜问题的情况下,将所述主键值是空值的所述数据表从所述数据表集合中删除,并删除后的所述数据表集合中的所有所述数据表进行关联;基于关联的所有所述数据表的所述主键类型,确定预设主键类型,并将关联的每张所述数据表的所述主键类型转换为所述预设主键类型;在存在两张所述数据表的所述热点值之间的差值大于预设热点阈值的情况下,在所述多表语句中的热点值字段前增加随机数;在关联的所有所述数据表中存在任意两张所述数据表的重复字段大于预设重复阈值的情况下,在所述多表语句中嵌套预设子查询,其中,所述预设子查询用于遍历重复字段并对重复字段进行去重处理;基于关联的每张所述数据表的数据量,对所述数据表的执行顺序进行调整,并在关联的所有所述数据表中存在任意两张所述数据表的所述数据量之间差值大于预设差值阈值的情况下,调整所述多表语句中的预设参数。
9、根据本专利技术实施例的另一方面,还提供了一种数据库语句的调整装置,包括:处理单元,用于获取原始数据库语句集合,并对所述原始数据库语句集合中的每条原始数据库语句进行预处理,得到格式化语句集合;划分单元,用于将所述格式化语句集合划分为单表语句集合和多表语句集合,其中,所述单表语句集合包括:多个单表语句,所述单表语句是在单张数据表中执行的语句,所述多表语句集合包括:多个多表语句,所述多表语句是在多张数据表中执行的语句;第一判断单元,用于基于所述单表语句集合,判断是否产生多文件问题和/或数据膨胀问题,并在产生所述多文件问题和/或所述数据膨胀问题的情况下,调整所述单表语句集合,得到第一预设语句集合;第二判断单元,用于基于所述多表语句集合,判断是否产生数据倾斜问题,并在产生所述数据倾斜问题的情况下,调整所述多表语句集合,得到第二预设语句集合;构建单元,用于基于所述第一预设语句集合以及所述第二预设语句集合,构建目标语句集合。
10、进一步地,所述处理单元包括:第一识别模块,用于识别所述原始数据库语句集合中每个原始数据库语句的关键字、函数以及参数;第一标注模块,用于对所述关键字、所述函数以及所述参数分别进行标注,得到所述格式化语句集合。
11、进一步地,所述调整装置还包括:第一获取模块,用于在获取原始数据库语句集合之后,获取所述原始数据库语句集合对应的执行计划树、元数据信息和日志信息;第一确定模块,用于基于所述执行计划树,确定所述原始数据库语句集合中每个原始数据库语句的执行顺序;第二确定模块,用于基于所述元数据信息,确定每个所述原始数据库语句关联的数据本文档来自技高网...
【技术保护点】
1.一种数据库语句的调整方法,其特征在于,包括:
2.根据权利要求1所述的调整方法,其特征在于,对所述原始数据库语句集合中的每条原始数据库语句进行预处理,得到格式化语句集合的步骤,包括:
3.根据权利要求1所述的调整方法,其特征在于,在获取原始数据库语句集合之后,还包括:
4.根据权利要求1所述的调整方法,其特征在于,基于所述单表语句集合,判断是否产生多文件问题和/或数据膨胀问题的步骤,包括:
5.根据权利要求4所述的调整方法,其特征在于,在产生所述多文件问题和/或所述数据膨胀问题的情况下,调整所述单表语句集合的步骤,包括:
6.根据权利要求1所述的调整方法,其特征在于,基于所述多表语句集合,判断是否产生数据倾斜问题的步骤,包括:
7.根据权利要求6所述的调整方法,其特征在于,在产生所述数据倾斜问题的情况下,调整所述多表语句集合的步骤,包括:
8.一种数据库语句的调整装置,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的数据库语句的调整方法。
...【技术特征摘要】
1.一种数据库语句的调整方法,其特征在于,包括:
2.根据权利要求1所述的调整方法,其特征在于,对所述原始数据库语句集合中的每条原始数据库语句进行预处理,得到格式化语句集合的步骤,包括:
3.根据权利要求1所述的调整方法,其特征在于,在获取原始数据库语句集合之后,还包括:
4.根据权利要求1所述的调整方法,其特征在于,基于所述单表语句集合,判断是否产生多文件问题和/或数据膨胀问题的步骤,包括:
5.根据权利要求4所述的调整方法,其特征在于,在产生所述多文件问题和/或所述数据膨胀问题的情况下,调整所述单表语句集合的步骤,包括:
6.根据权利要求1所述的调整方法,其特征在于,基于所述多表语句集合,判断是否产生数...
【专利技术属性】
技术研发人员:张智,
申请(专利权)人:天翼电子商务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。