【技术实现步骤摘要】
一种SQL风险识别方法、装置及设备
本申请涉及大数据领域,特别涉及一种SQL风险识别方法、装置及设备。
技术介绍
随着大数据技术的广泛兴起,越来越多的银行建立了企业级的大数据技术中台,数据湖及数据仓库的业务日益复杂,数据量呈指数级增长态势,同时数据中台纳入的应用日益增多,性能及稳定性作为大数据技术平台质量的重要指标,受到越来越高的挑战。在大数据技术平台运营过程中,由于低效SQL(StructuredQueryLanguage,结构化查询语言)导致的性能问题日益突出,生产环境上一旦发生性能问题,将导致整个大数据技术平台资源短时间内达到瓶颈,严重影响平台的性能及稳定性。目前对低效SQL导致的性能问题仅能在事后分析排查解决,存在发现问题不及时、解决问题周期长等问题,从而影响业务正常运营。因此,业内亟需一种可以解决上述技术问题的技术方案。
技术实现思路
本说明书实施例提供了一种SQL风险识别方法、装置及设备,可以全流程、全方位、精准地识别低效SQL并进行性能优化,从而有效解决发现问题不及时、解决问题周期长等问题,使业务正常运营。本说明书提供的一种SQL风险识别方法、装置及设备是包括以下方式实现的。一种SQL风险识别方法,包括:获取提交的SQL代码,基于预设代码检查规则判断所述SQL代码中是否存在风险SQL;确定不存在时,将所述SQL代码发布至测试环境;调用所述测试环境中的第一风险识别模型对所述SQL代码进行风险识别;其中,所述第一风险识别模型基于测试环境中的SQL特征数据训 ...
【技术保护点】
1.一种SQL风险识别方法,其特征在于,包括:/n获取提交的SQL代码,基于预设代码检查规则判断所述SQL代码中是否存在风险SQL;/n确定不存在时,将所述SQL代码发布至测试环境;/n调用所述测试环境中的第一风险识别模型对所述SQL代码进行风险识别;其中,所述第一风险识别模型基于测试环境中的SQL特征数据训练获得;/n在识别结果中不存在风险SQL时,将所述SQL代码发布至生产环境;/n调用所述生产环境中的第二风险识别模型对所述SQL代码中的慢SQL进行风险识别,获得风险识别结果;其中,所述第二风险识别模型基于生产环境中的SQL特征数据训练获得;所述慢SQL为超过预设阈值的SQL。/n
【技术特征摘要】
1.一种SQL风险识别方法,其特征在于,包括:
获取提交的SQL代码,基于预设代码检查规则判断所述SQL代码中是否存在风险SQL;
确定不存在时,将所述SQL代码发布至测试环境;
调用所述测试环境中的第一风险识别模型对所述SQL代码进行风险识别;其中,所述第一风险识别模型基于测试环境中的SQL特征数据训练获得;
在识别结果中不存在风险SQL时,将所述SQL代码发布至生产环境;
调用所述生产环境中的第二风险识别模型对所述SQL代码中的慢SQL进行风险识别,获得风险识别结果;其中,所述第二风险识别模型基于生产环境中的SQL特征数据训练获得;所述慢SQL为超过预设阈值的SQL。
2.根据权利要求1所述的方法,其特征在于,所述预设代码检查规则包括以下至少之一:大容量表使用笛卡尔积、大容量表存在全表扫描风险、大容量表存在查询列无裁剪、分区表未加分区限定条件、大容量表使用count(distinct)函数、大容量表使用row_number()函数、大容量表使用orderby排序操作、大容量表使用collect_set函数、大容量表使用collect_list函数、大容量表使用unixtimestamp函数、大容量表使用正则表达式、join字段和groupby字段一致但没打开性能优化开关、大容量表存在非主键关联风险、unionall部分个数超过规范阈值、SQL嵌套次数超过规范阈值。
3.根据权利要求1所述的方法,其特征在于,第一/第二风险识别模型通过下述方式获得:
获取测试环境/生产环境中与SQL关联的特征数据;
根据测试环境/生产环境的运维诊断信息为所述SQL分配类别标签;所述类别标签包括低效SQL和非低效SQL;
利用所述SQL的特征数据和类别标签对XGBoost模型进行训练,获得第一/第二风险识别模型;其中,训练过程中,基于特征工程不断优化模型的参数。
4.根据权利要求3所述的方法,其特征在于,所述特征数据包括基础特征数据、风险特征数据、SQL执行计划特征数据;所述基础特征数据基于元数据对测试环境/生产环境中的SQL语句解析获得;所述风险特征数据基于预设代码检查规则对SQL语句检查获得;所述SQL执行计划特征数据基于对测试环境/生产环境的SQL执行计划解析获得。
5.根据权利要求3所述的方法,其特征在于,所述特征工程包括特征选择、特征变换、特征组合;其中,特征选择中选择的特征字段包括以下至少之一:SQL运行时间、SQL执行开始时间、SQL执行结束时间、SQL长度、SQL嵌套次数、SQL分区访问次数、SQL访问表分区容量大小、SQL访问表分区个数、SQL访问表次数、SQL访问表个数、SQL访问表容量大小、非主键关联次数、SQL执行计划cost值、SQL命中高风险次数、SQL命中中风险次数、SQL命中低风险次数、SQL命中的风险类别、SQL命中大容量表使用笛卡尔积次数、SQL命中大容量表存在全表扫描风险次数、SQL命中大容量表存在查询列无裁剪次数、SQL命中分区表未加分区限定条件次数、SQL命中大容量表使用count(distinct)函数次数、SQL命中大容量表使用row_number()函数次数、SQL命中大容量表使用orderby排序操作次数、SQL命中大容量表使用collect_set函数次数、SQL命中大容量表使用collect_list函数次数、SQL命中大容量表使用unixtimestamp函数次数、SQL命中大容量表使用正则表达式次数、SQL命中join字段和groupby字段一致但没打开性能优化开关次数、SQL命中大容量表存在非主键关联风险次数、SQL命中un...
【专利技术属性】
技术研发人员:李海波,夏雯君,廖云,卫欣音,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。