一种生产环境发布方法、装置、设备及介质与流程

本技术涉及数据库,特别是涉及一种生产环境发布方法、装置、设备及介质。
背景技术:
1、生产环境发布是指将通过测试的系统或软件部署到生产环境的过程。在系统开发初期,由于数据库数据较少,结构化查询语言(structured query language,sql)的性能对系统响应速度影响较小,随着系统投入实际应用,数据库中的数据量会不断增加,此时,低性能的sql会导致系统性能下降,为了提升系统的可用性,会对sql进行分析获得低性能的sql进行优化。
2、目前,是在对业务代码进行生产环境发布后,记录生产数据库的sql执行日志,管理人员对sql执行日志进行分析以提取低性能sql进行优化。然而,在生产环境发布过程中,所存在的低性能sql可能会影响生产数据库性能甚至于造成生产数据库故障,也即,目前的生产环境发布方法效果差,在低性能sql影响发生后再分析sql执行日志,无法实现对低性能sql的有效拦截。
技术实现思路
1、本技术提供了一种生产环境发布方法、装置、设备及介质,能够降低低性能sql对生产环境数据库稳定性的威胁,提高生产环境发布效果。
2、第一方面,本技术提供了一种生产环境发布方法,所述方法包括:
3、响应于接收生产环境发布请求,获取低性能结构化查询语言sql指纹数据库和生产sql指纹数据库;所述低性能sql指纹数据库用于存储预发环境的低性能sql指纹;所述生产sql指纹数据库用于存储生产环境的新增sql指纹;所述生产环境发布请求用于指示将所述预发环境下的目标业务代码发布至所述生产环境;所述低性能sql指纹对应的低性能sql为降低数据库性能的sql;
4、对比所述低性能sql指纹数据库和所述生产sql指纹数据库,检测所述预发环境是否存在新增低性能sql;所述新增低性能sql为对应低性能sql指纹在所述预发环境新增且所述生产环境中不存在的低性能sql;
5、若检测所述预发环境存在所述新增低性能sql,对所述新增低性能sql优化获得目标业务代码,所述目标业务代码包括优化sql;
6、将所述目标业务代码发布至所述生产环境。
7、可选地,所述获取低性能sql指纹数据库和生产sql指纹数据库,包括:
8、分别从预发环境数据库和生产环境数据库进行采集,获得预发环境sql和生产环境sql;所述预发环境数据库用于存储仿真测试数据;所述生产环境数据库用于存储真实业务数据;
9、对所述预发环境sql进行指纹计算获得所述预发环境sql指纹,以及对所述生产环境sql进行指纹计算获得所述生产环境sql指纹;
10、若所述预发环境sql为新增状态的低性能sql,则将所述预发环境sql指纹存储至所述低性能sql指纹数据库;
11、若所述生产环境sql为新增状态,则将所述生产环境sql指纹存储至所述生产sql指纹数据库。
12、可选地,所述对所述预发环境sql进行指纹计算获得所述预发环境sql指纹,包括:
13、构建所述预发环境sql对应的抽象语法树;
14、对所述抽象语法树进行特征提取,获得数据库对象的信息;所述数据库对象表征数据库中存储数据的结构或元素;
15、对所述数据库对象的信息进行拼接,获得去参数化sql;
16、对所述去参数化sql进行哈希算法计算,获得所述预发环境sql指纹。
17、可选地,所述对所述生产环境sql进行指纹计算获得所述生产环境sql指纹,包括:
18、构建所述生产环境sql对应的抽象语法树;
19、对所述抽象语法树进行特征提取,获得数据库对象的信息;所述数据库对象表征数据库中存储数据的结构或元素;
20、对所述数据库对象的信息进行拼接,获得去参数化sql;
21、对所述去参数化sql进行哈希算法计算,获得所述生产环境sql指纹。
22、可选地,所述若所述预发环境sql为新增状态的低性能sql,则将所述预发环境sql指纹存储至所述低性能sql指纹数据库,包括:
23、检测预发环境历史指纹数据库中是否存在所述预发环境sql指纹;
24、若不存在,则获取所述预发环境sql为新增状态;
25、对所述预发环境sql进行性能诊断,获得诊断结果;
26、在诊断结果表征所述预发环境sql为低性能sql时,将所述预发环境sql指纹存储至所述低性能sql指纹数据库。
27、可选地,所述对所述预发环境sql进行性能诊断,获得诊断结果,包括:
28、根据预设特征标准对预发环境sql指纹进行性能诊断,获得所述诊断结果;所述预设特征标准包括扫描行数数量、返回结果集、执行持续时间、是否全表扫描、update语义逻辑是否正确以及是否使用hit index非最佳实践中至少一个。
29、可选地,所述若所述生产环境sql为新增状态,则将所述生产环境sql指纹存储至所述生产sql指纹数据库,包括:
30、检测生产环境历史指纹数据库中是否存在所述生产环境sql指纹;
31、若不存在,则获取所述生产环境sql为新增状态;
32、将所述生产环境sql指纹存储至所述生产sql指纹数据库。
33、第二方面,本技术还提供了一种生产环境发布系统,所述系统包括sql指纹获取模块、增量sql对比模块以及拦截模块;
34、所述sql指纹获取模块,用于响应于接收生产环境发布请求,获取低性能结构化查询语言sql指纹数据库和生产sql指纹数据库;所述低性能sql指纹数据库用于存储预发环境的低性能sql指纹;所述生产sql指纹数据库用于存储生产环境的新增sql指纹;所述生产环境发布请求用于指示将所述预发环境下的目标业务代码发布至所述生产环境;所述低性能sql指纹对应的低性能sql为降低数据库性能的sql;
35、所述增量sql对比模块,用于对比所述低性能sql指纹数据库和所述生产sql指纹数据库,检测所述预发环境是否存在新增低性能sql;所述新增低性能sql为对应低性能sql指纹在所述预发环境新增且所述生产环境中不存在的低性能sql;
36、所述拦截模块,用于若检测所述预发环境存在所述新增低性能sql,对所述新增低性能sql优化获得目标业务代码,所述目标业务代码包括优化sql;
37、所述拦截模块,还用于将所述目标业务代码发布至所述生产环境。
38、可选地,所述系统还包括:所述全量sql采集模块、sql指纹计算模块和sql新增判断模块;
39、所述全量sql采集模块,用于分别从预发环境数据库和生产环境数据库进行采集,获得预发环境sql和生产环境sql;所述预发环境数据库用于存储仿真测试数据;所述生产环境数据库用于存储真实业务数据;
40、所述sql指纹计算模块,用于对所述预发环境sql进行指纹计算获得所述预发环境sql指纹,以及对所述生产环境sql进行指纹计算获得所述生产环境sql指纹;
41、所述sql新增判断模块,用于若所述预发环境sql为新增状态的低性能sql,则将所述预发环境sql指纹存储至所述低性能sql指纹数据库;
42、所述sql新增判断模块,还用于若所述生产环境sql为新增状态,则将所述生产环境sql指纹存储至所述生产sql指纹数据库。
43、可选地,所述sql指纹计算模块,具体用于:
44、构建所述预发环境sql对应的抽象语法树;
45、对所述抽象语法树进行特征提取,获得数据库对象的信息;所述数据库对象表征数据库中存储数据的结构或元素;
46、对所述数据库对象的信息进行拼接,获得去参数化sql;
47、对所述去参数化sql进行哈希算法计算,获得所述预发环境sql指纹。
48、可选地,所述sql指纹计算模块,具体用于:
49、构建所述生产环境sql对应的抽象语法树;
50、对所述抽象语法树进行特征提取,获得数据库对象的信息;所述数据库对象表征数据库中存储数据的结构或元素;
51、对所述数据库对象的信息进行拼接,获得去参数化sql;
52、对所述去参数化sql进行哈希算法计算,获得所述生产环境sql指纹。
53、可选地,所述sql新增判断模块,具体用于:
54、检测预发环境历史指纹数据库中是否存在所述预发环境sql指纹;
55、若不存在,则获取所述预发环境sql为新增状态;
56、对所述预发环境sql进行性能诊断,获得诊断结果;
57、在诊断结果表征所述预发环境sql为低性能sql时,将所述预发环境sql指纹存储至所述低性能sql指纹数据库。
58、可选地,所述系统还包括sql性能诊断模块;
59、所述sql性能诊断模块,用于根据预设特征标准对预发环境sql指纹进行性能诊断,获得所述诊断结果;所述预设特征标准包括扫描行数数量、返回结果集、执行持续时间、是否全表扫描、update语义逻辑是否正确以及是否使用hit index非最佳实践中至少一个。
60、可选地,所述sql新增判断模块,具体用于:
61、检测生产环境历史指纹数据库中是否存在所述生产环境sql指纹;
62、若不存在,则获取所述生产环境sql为新增状态;
63、将所述生产环境sql指纹存储至所述生产sql指纹数据库。
64、第三方面,本技术还提供了一种电子设备,所述电子设备包括处理器以及存储器:
65、所述存储器用于存储计算机程序;
66、所述处理器用于根据所述计算机程序执行上述第一方面提供的所述方法。
67、第四方面,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述第一方面提供的所述方法。
68、由此可见,本技术具有如下有益效果:
69、本技术提供了一种生产环境发布方法、装置、设备及介质,该方法包括:响应于接收生产环境发布请求,获取低性能结构化查询语言sql指纹数据库和生产sql指纹数据库;其中,低性能sql指纹数据库用于存储预发环境的低性能sql指纹;生产sql指纹数据库用于存储生产环境的新增sql指纹;生产环境发布请求用于指示将预发环境下的目标业务代码发布至生产环境;低性能sql指纹对应的低性能sql为降低数据库性能的sql;对比低性能sql指纹数据库和生产sql指纹数据库,检测预发环境是否存在新增低性能sql;新增低性能sql为对应低性能sql指纹在预发环境新增且生产环境中不存在的低性能sql;若检测预发环境存在所述新增低性能sql,对新增低性能sql优化获得目标业务代码,目标业务代码包括优化sql;将目标业务代码发布至生产环境。如此,在接收到生产环境发布请求时,先对比低性能sql指纹数据库和生产sql指纹数据库,获取预发环境中的低性能sql,对该低性能sql进行优化后再进行生产环境发布,实现了提前发现低性能sql,相较于现有技术的事后慢sql分析,本技术可以将低性能sql拦截在生产环境数据库之外,一定程度降低了低性能sql对生产环境数据库稳定性的威胁,提高了生产环境发布效果。
技术研发人员:蔡朋
技术所有人:深圳依时货拉拉科技有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
