[发明专利]SQL优化方法、装置、存储介质及计算机设备有效
申请号: | 202010141851.3 | 申请日: | 2020-03-04 |
公开(公告)号: | CN111400338B | 公开(公告)日: | 2022-11-22 |
发明(设计)人: | 刘佳 | 申请(专利权)人: | 深圳平安医疗健康科技服务有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2453 |
代理公司: | 北京中强智尚知识产权代理有限公司 11448 | 代理人: | 黄耀威 |
地址: | 518000 广东省深圳市福田区华*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 优化 方法 装置 存储 介质 计算机 设备 | ||
1.一种SQL优化方法,其特征在于,所述方法包括:
采集多组SQL样本数据,并根据所述SQL样本数据创建决策模型;
获取待优化的SQL语句以及所述待优化的SQL语句对应的应用环境信息;
将所述待优化的SQL语句转换为抽象语法树;
根据所述待优化的SQL语句对应的应用环境信息,利用所述决策模型对所述抽象语法树进行优化处理;
将所述优化后的抽象语法树转换为SQL语句,得到优化后的SQL语句;
其中,所述根据所述SQL样本数据创建决策模型,包括:将所述多组SQL样本数据划分为训练集和测试集,所述多组SQL样本数据包括多组优化前的第一SQL脚本,以及与所述第一SQL脚本对应的预优化的第二SQL脚本和对应的应用环境信息;根据所述训练集中的第一SQL脚本、第二SQL脚本和对应的应用环境信息,创建多个决策轨迹数据,其中,每条决策轨迹数据均包含多条SQL语法和与所述SQL语法对应的优化操作序列;提取出所有决策轨迹数据中的SQL语法和优化操作的映射关系,并根据提取出的SQL语法和优化操作的映射关系构造一个数据集合;通过分离算法和/或回归算法,对所述数据集合进行迭代计算,训练得到决策模型;
所述根据所述待优化的SQL语句对应的应用环境信息,利用所述决策模型对所述抽象语法树进行优化处理,包括:通过抽象语法树,得到所述待优化SQL语句的查询条件;根据所述待优化的SQL语句对应的应用环境信息,确定优化策略;根据所述优化策略,去除冗余的查询条件;根据所述优化策略,将所述去除了冗余的查询条件替换为语义相同的查询条件或将所述查询条件拆分为多条查询条件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述测试集中的第一SQL脚本和第二SQL脚本分别进行性能测试,并根据所述性能测试的结果得到目标性能指标,所述目标性能指标包括预设的SQL执行时间阈值、内存占用率阈值、CPU占用率阈值、读写数据库次数阈值和死锁次数阈值;
根据所述目标性能指标创建奖励函数;
利用所述决策模型对所述测试集中的第一SQL脚本进行优化,得到优化后的第一SQL脚本;
对所述优化后的第一SQL脚本进行性能测试,得到所述优化后的第一SQL脚本的性能指标,所述性能指标包括SQL执行时间、内存占用率、CPU占用率、读写数据库次数和死锁次数;
将所述优化后的第一SQL脚本的性能指标与目标性能指标进行对比,根据对比结果通过贪心算法和/或值函数算法得到累计奖励;
根据所述累计奖励优化所述决策模型的转移概率。
3.根据权利要求2所述的方法,其特征在于,所述将所述待优化的SQL语句转换为抽象语法树,具体包括:
通过词法分析器将所述待优化的SQL语句按照预定的词法规则拆分成多个词元;
利用语法分析器按照设定的语法规则对所述多个词元进行语法分析;
将符合语法规则的多个词元转换成抽象语法树。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
对所述优化后的SQL语句进行性能测试,得到优化后的SQL语句的性能指标,所述性能指标包括SQL执行时间、内存占用率、CPU占用率、读写数据库次数和死锁次数;
将所述优化后的SQL语句的性能指标与预设性能指标进行对比;
若所述优化后的SQL语句的性能测试指标未达到预设性能指标,则对所述优化后的SQL语句进行再次优化和/或通过所述决策模型输出待优化的SQL语句的索引优化建议和内存优化建议。
5.根据权利要求4所述的方法,其特征在于,所述通过所述决策模型输出待优化的SQL语句的索引优化建议和内存优化建议,具体包括:
获取待优化的SQL语句的索引信息、建表脚本信息和执行计划;
通过所述执行计划获取所述待优化的SQL语句的索引执行信息;
根据所述索引执行信息、索引信息和预设的索引优化策略生成索引优化建议;
根据所述建表脚本信息和预设的内存优化策略生成内存优化建议。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳平安医疗健康科技服务有限公司,未经深圳平安医疗健康科技服务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010141851.3/1.html,转载请声明来源钻瓜专利网。