CN109753490A - 基于漏洞修复的数据库优化方法、系统、设备及介质 - Google Patents
基于漏洞修复的数据库优化方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN109753490A CN109753490A CN201811528425.4A CN201811528425A CN109753490A CN 109753490 A CN109753490 A CN 109753490A CN 201811528425 A CN201811528425 A CN 201811528425A CN 109753490 A CN109753490 A CN 109753490A
- Authority
- CN
- China
- Prior art keywords
- database
- sentence
- statement
- database statement
- optimizing suggestions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种基于漏洞修复的数据库优化方法,其特征在于,包括:响应于数据库的上线后审核信号,获取第一数据库语句;获取优化模型,其中,优化模型用于针对输入其中的数据库语句输出对应的优化建议;将第一数据库语句输入优化模型,以得到优化模型输出的针对第一数据库语句的优化建议;以及根据针对第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。本公开还提供了一种基于漏洞修复的数据库优化系统、一种计算机设备及一种计算机可读存储介质。
Description
技术领域
本发明涉及计算机技术领域,具体涉及基于漏洞修复的数据库优化方法、系统、计算机设备及计算机可读存储介质。
背景技术
在项目上线使用的初期,由于业务数据量相对较少,一些数据库语句的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断数据库语句对程序的运行效率有多大,故很少针对数据库语句进行专门优化。
但是,随着时间的积累、业务数据量的增多,数据库语句的执行效率对程序运行效率的影响逐渐增大,系统的可用时间逐渐减少,且出现线上生产故障的几率也逐渐增大。
目前,未有解决上述缺陷的方案存在。
发明内容
本公开目的是提供一种基于漏洞修复的数据库优化方法、系统、计算机设备及计算机可读存储介质,以至少解决现有技术中由于未对数据库语句进行优化导致系统的可用时间减少且线上生产故障的几率增大的缺陷。
本公开的一个方面提供了一种基于漏洞修复的数据库优化方法,其特征在于,包括:响应于数据库的上线后审核信号,获取第一数据库语句;获取优化模型,其中,上述优化模型用于针对输入其中的数据库语句输出对应的优化建议;将上述第一数据库语句输入上述优化模型,以得到上述优化模型输出的针对上述第一数据库语句的优化建议;以及根据针对上述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
根据本公开的实施例,将上述第一数据库语句输入上述优化模型,以得到上述优化模型输出的针对上述第一数据库语句的优化建议,包括:获取多条映射关系,其中,上述映射关系中包括历史数据库语句以及针对上述历史数据库语句的优化建议的映射关系;从多条映射关系中确定出与上述第一数据库语句对应的映射关系;以及根据上述与上述第一数据库语句对应的映射关系,得到针对上述第一数据库语句的优化建议。
根据本公开的实施例,上述从多条映射关系中确定出与上述第一数据库语句对应的映射关系,包括:计算上述多条映射关系中各条映射关系的历史数据库语句与上述第一数据库语句的相似度,得到多个相似度;确定上述多个相似度中数值最大的相似度;以及将上述多条映射关系中与上述数值最大的相似度对应的映射关系作为与上述第一数据库语句对应的映射关系。
根据本公开的实施例,上述根据针对上述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告,包括:若上述第一数据库语句中存在满足预设条件的数据库语句,则根据针对上述满足预设条件的数据库语句的优化建议生成上述优化数据库语句;若上述第一数据库语句中存在不满足上述预设条件的数据库语句,则根据针对上述不满足上述预设条件的数据库语句的优化建议生成上述优化建议报告。
根据本公开的实施例,上述方法还包括:响应于数据库的上线前审核信号,获取第二数据库语句;确定上述第二数据库语句中不符合预设规则的数据库语句;以及基于上述不符合预设规则的数据库语句生成修改建议报告,其中,上述第一数据库语句包括基于上述修改建议报告对上述不符合预设规则的数据库语句进行修改得到的数据库语句和上述第二数据库语句中符合上述预设规则的数据库语句。
根据本公开的实施例,上述基于上述不符合预设规则的数据库语句生成修改建议报告,包括:确定上述不符合预设规则的数据库语句对应上述预设规则中的要素;确定上述不符合预设规则的数据库语句的类别;以及基于上述不符合预设规则的数据库语句、上述对应上述预设规则中的要素以及上述类别,生成上述修改建议报告。
根据本公开的实施例,上述方法还包括:响应于数据库的修改信号,确定至少一条待修改数据库语句;以及对上述至少一条待修改数据库语句进行备份。
本公开的另一个方面提供了一种基于漏洞修复的数据库优化系统,其特征在于,包括:第一获取模块,用于响应于数据库的上线后审核信号,获取第一数据库语句;第二获取模块,用于获取优化模型,其中,上述优化模型用于针对输入其中的数据库语句输出对应的优化建议;输入模块,用于将上述第一数据库语句输入上述优化模型,以得到上述优化模型输出的针对上述第一数据库语句的优化建议;以及生成模块,用于根据针对上述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
根据本公开的实施例,上述输入模块包括:获取单元,用于获取多条映射关系,其中,上述映射关系中包括历史数据库语句以及针对上述历史数据库语句的优化建议的映射关系;第一确定单元,用于从多条映射关系中确定出与上述第一数据库语句对应的映射关系;以及处理单元,用于根据上述与上述第一数据库语句对应的映射关系,得到针对上述第一数据库语句的优化建议。
根据本公开的实施例,上述第一确定单元包括:计算子单元,用于计算上述多条映射关系中各条映射关系的历史数据库语句与上述第一数据库语句的相似度,得到多个相似度;确定子单元,用于确定上述多个相似度中数值最大的相似度;以及处理子单元,用于将上述多条映射关系中与上述数值最大的相似度对应的映射关系作为与上述第一数据库语句对应的映射关系。
根据本公开的实施例,上述生成模块包括:第一生成单元,用于在上述第一数据库语句中存在满足预设条件的数据库语句的情况下,根据针对上述满足预设条件的数据库语句的优化建议生成上述优化数据库语句;第二生成单元,用于在上述第一数据库语句中存在不满足上述预设条件的数据库语句的情况下,根据针对上述不满足上述预设条件的数据库语句的优化建议生成上述优化建议报告。
根据本公开的实施例,上述系统还包括:第三获取模块,用于响应于数据库的上线前审核信号,获取第二数据库语句;第一确定模块,用于确定上述第二数据库语句中不符合预设规则的数据库语句;以及处理模块,用于基于上述不符合预设规则的数据库语句生成修改建议报告,其中,上述第一数据库包括基于上述修改建议报告对上述不符合预设规则的数据库语句进行修改得到的数据库语句和上述第二数据库语句中符合上述预设规则的数据库语句。
根据本公开的实施例,上述处理模块包括:第二确定单元,用于确定上述不符合预设规则的数据库语句对应上述预设规则中的要素;第三确定单元,用于确定上述不符合预设规则的数据库语句的类别;以及第三生成单元,用于基于上述不符合预设规则的数据库语句、上述对应上述预设规则中的要素以及上述类别,生成上述修改建议报告。
根据本公开的实施例,上述系统还包括:第二确定模块,用于响应于数据库的修改信号,确定至少一条待修改数据库语句;以及备份模块,用于对上述至少一条待修改数据库语句进行备份。
本公开的再一个方面提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行上述计算机程序时用于实现如上任一项所述的方法的步骤。
本公开的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时用于实现如上任一项所述的方法的步骤。
本公开提供的基于漏洞修复的数据库优化方法,在接收到数据库的上线后审核信号之后,可以获取该数据库的第一数据库语句,并将第一数据库语句输入到预先设定好的优化模型中,以使得该优化模型可以输出针对第一数据库语句的优化建议,再根据这些优化建议,生成优化数据库语句和优化建议报告中的一个或多个。其中,若是生成优化数据库语句则可以实现自动优化,若是生成优化建议报告,则工程师可以根据优化建议报告对第一数据库语句进行优化。基于此,本公开的实施例可以提升系统的可用时间,降低线上生产故障,避免现有技术中由于未对数据库语句进行优化导致系统的可用时间减少且线上生成故障的几率增大的缺陷。
附图说明
图1示意性示出了根据本公开实施例的基于漏洞修复的数据库优化方法的流程图;
图2示意性示出了根据本公开另一实施例的基于漏洞修复的数据库优化方法的流程图;
图3示意性示出了根据本公开实施例的基于漏洞修复的数据库优化方案的示意图;
图4示意性示出了根据本公开实施例的基于漏洞修复的数据库优化系统的框图;以及
图5示意性示出了根据本公开实施例的适于实现基于漏洞修复的数据库优化方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
考虑到现有技术中由于未对数据库语句进行优化导致系统的可用时间减少且线上生产故障的几率增大的缺陷。本公开提供的基于漏洞修复的数据库优化方法,在接收到数据库的上线后审核信号之后,可以获取该数据库的第一数据库语句,并将第一数据库语句输入到预先设定好的优化模型中,以使得该优化模型可以输出针对第一数据库语句的优化建议,再根据这些优化建议,生成优化数据库语句和优化建议报告中的一个或多个。其中,若是生成优化数据库语句则可以自动实现优化,若是生成优化建议报告,则工程师可以根据优化建议报告对第一数据库语句进行优化,基于此,本公开的实施例可以提升系统的可用时间,降低线上生产故障。
图1示意性示出了根据本公开实施例的基于漏洞修复的数据库优化方法的流程图。
如图1所示,该基于漏洞修复的数据库优化方法可以包括步骤S101~步骤S104,其中:
步骤S101,响应于数据库的上线后审核信号,获取第一数据库语句。
需要说明的是,本公开的实施例中的数据库可以包括但不限于以下任意一种或几种:Oracle数据库、MySQL数据库、Postgresql数据库。
在本公开实施例中,在数据库上线一段时间后,可以定期执行数据库的上线后审核操作,即定期对上线后的数据库语句进行优化和/或生成优化建议报告。其中,第一数据库语句可以包括该上线后的数据库语句中的一条或多条。
具体地,本公开的实施例可以响应于数据库的上线后审核信号,获取该数据库中的第一数据库语句,并执行步骤S102。其中,此处的上线后审核信号可以是在数据库上线之后,服务器定期触发对该上线后的数据库进行审核操作而产生的信号。
步骤S102,获取优化模型,其中,优化模型用于针对输入其中的数据库语句输出对应的优化建议。
在本公开的实施例中,已经预先设定好了优化模型,且将数据库语句输入该优化模型后,该优化模型能够依据其自身的功能输出针对该数据库语句的优化建议。
步骤S103,将第一数据库语句输入优化模型,以得到优化模型输出的针对第一数据库语句的优化建议。
需要说明的是,在第一数据库语句包括多条时,本公开的实施例可以将各条第一数据库语句分别输入到优化模型中,使该优化模型输出针对每一条第一数据库语句的优化建议。
其中,对于每一条第一数据库语句,将第一数据库语句输入优化模型,以得到优化模型输出的针对第一数据库语句的优化建议,可以包括:获取多条映射关系,其中,映射关系中包括历史数据库语句以及针对历史数据库语句的优化建议的映射关系;从多条映射关系中确定出与第一数据库语句对应的映射关系,如:计算多条映射关系中各条映射关系的历史数据库语句与第一数据库语句的相似度,得到多个相似度,确定多个相似度中数值最大的相似度,并将多条映射关系中与数值最大的相似度对应的映射关系作为与第一数据库语句对应的映射关系;进一步根据对应的映射关系,得到针对第一数据库语句的优化建议。
例如,有三条映射关系,分别是映射关系A,映射关系B和映射关系C,其中,映射关系A中包括历史数据库语句A和针对该历史数据库语句A的优化建议A,映射关系B中包括历史数据库语句B和针对该历史数据库语句B的优化建议B,映射关系C中包括历史数据库语句C和针对该历史数据库语句C的优化建议C。对于任意一个第一数据库语句,计算得知该第一数据库语句与历史数据向量A的相似度为相似度A,该第一数据库语句与历史数据向量B的相似度为相似度B,该第一数据库语句与历史数据向量C的相似度为相似度C。其中,若相似度C的值最大,则可以将映射关系C中的优化建议C作为针对该第一数据库语句的优化建议。
根据本公开的实施例,还可以利用上述多条映射关系对有监督的机器学习模型(例如神经网络、朴素贝叶斯模型等)进行训练,进而可以得到优化模型,该优化模型可以基于输入其自身的数据库语句输出针对该数据库语句的优化建议。
例如,结合上述示例,通过映射关系A,映射关系B和映射关系C训练神经网络可以得到优化模型,将上述示例中的第一数据库语句输入该优化模型后,该优化模型可以输出针对该第一数据库语句的优化建议例如优化建议C。
步骤S104,根据针对第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
在本公开的实施例中,根据针对第一数据库语句的优化建议,生成优化数据库语句可以是:判断第一数据库语句中是否存在满足预设条件的数据库语句,若存在,则可以从针对第一数据库语句的优化建议中确定出针对满足预设条件的数据库语句的优化建议,并根据该满足预设条件的数据库语句的优化建议,自动对该满足预设条件的数据库语句进行优化,得到该满足预设条件的数据库语句的优化数据库语句。其中,预设条件可以是数据库语句的复杂度低于预设复杂度,例如,若数据库语句中包含的表的数量小于2张,每张表中的数据量小于10000条,则可以称该数据库语句的复杂度低于预设复杂度。
下面以根据针对第一数据库语句的优化建议生成优化数据库语句为例进行描述。
例如,有五条第一数据库语句,第一条第一数据库语句为:select t1.type,t1.name from merchs t1where t1.id>100;第二条第一数据库语句为:selectt2.orderno,t2.goodsmoney from orders t2where t2.delivertype=0andt.orderstatus=1;第三条第一数据库语句为:select t3.totalscore,t3.servicescore,t4.marketPrice,t4.specprice,t4.specstock from wst_goods_scores t3,wst_goods_specs t4where t3.goodsid=t4.goodsid and t3.goodsscore>3;第四条第一数据库语句为:select t5.isself,t5.shopname,t6.accredid,count(*)from wst_shops t5,wst_shop_accreds t6where t5.shopid=t6.shopid group by t5.isself,t5.shopname,t6.accredid;第五条第一数据库语句为:select t7.logid,t7.orderid,t7.orderstatusfrom wst_log_orders t7where logtype=‘1’。其中,针对第一条第一数据库语句为的优化建议为:单表数据量过大,针对第二条第一数据库语句为的优化建议为:单表索引数量过多,针对第三条第一数据库语句为的优化建议为:存在重复索引,针对第四条第一数据库语句为的优化建议为:表存在外键以及单表字段数过多,针对第五条第一数据库语句为的优化建议为:更新主键。若第一条第一数据库语句为、第二条第一数据库语句为和第三条第一数据库语句为均为满足预设条件的数据库语句,则可以根据针对第一条第一数据库语句为的优化建议即单表数据量过大,自动对第一条第一数据库语句为进行优化,如,将第一条第一数据库语句中的数据量过大的表分为两张以上的表;还可以根据针对第二条第一数据库语句的优化建议即单表索引数量过多,自动对第二条第一数据库语句进行优化,如删除该表中的几个索引;还可以根据针对第三条第一数据库语句的优化建议即存在重复索引,自动对第三条第一数据库语句进行优化,如删除重复的索引。
在本公开的实施例中,根据针对第一数据库语句的优化建议,生成优化建议报告可以是:判断数据库语句中是否存在不满足预设条件的数据库语句,若存在,则可以从针对第一数据库语句的优化建议中确定出针对不满足预设条件的数据库语句的优化建议,并根据该不满足预设条件的数据库语句的优化建议,生成优化建议报告,以使得工程师可以根据该优化建议报告对不满足预设条件的数据库语句进行优化。
下面以根据针对第一数据库语句的优化建议生成优化建议报告为例进行描述。
例如,结合上述示例,若第四条第一数据库语句和第五条第一数据库语句为不满足预设条件的数据库语句,则可以根据针对第四条第一数据库语句的优化建议和针对第五条第一数据库语句的优化建议生成优化建议报告,即该优化建议报告中包括:对于第四条第一数据库语句,优化建议为表存在外键以及单表字段数过多;对于第五条第一数据库语句,优化建议为更新主键。此时,工程师例如研发人员可以根据该优化建议报告,对第四条第一数据库语句和第五条第一数据库语句进行优化。
需要说明的是,若数据库语句中即存在满足预设条件的数据库语句,又存在不满足预设条件的数据库语句,则可以根据该满足预设条件的数据库语句的优化建议生成优化数据库语句,并根据该不满足预设条件的数据库语句的优化建议生成优化建议报告。
本公开提供的基于漏洞修复的数据库优化方法,在接收到数据库的上线后审核信号之后,可以获取该数据库中的第一数据库语句,并将第一数据库语句输入到预先设定好的优化模型中,以使得该优化模型可以输出针对第一数据库语句的优化建议,再根据这些优化建议,生成优化数据库语句和优化建议报告中的一个或多个。其中,若是生成优化数据库语句则可以实现自动优化,若是生成优化建议报告,则工程师可以根据优化建议报告对第一数据库语句进行优化。基于此,本公开的实施例可以提升系统的可用时间,降低线上生产故障,避免现有技术中由于未对数据库语句进行优化导致系统的可用时间减少且线上生成故障的几率增大的缺陷。
图2示意性示出了根据本公开另一实施例的基于漏洞修复的数据库优化方法的流程图。
如图2所示,该基于漏洞修复的数据库优化方法除了可以包括步骤S101~步骤S104之外,还可以包括步骤S201~步骤S203,其中:
步骤S201,响应于数据库的上线前审核信号,获取第二数据库语句。
在本公开的实施例,在研发工程师完成数据库开发后,可以提交数据库的上线前审核请求,本公开的实施例可以自动进行数据库的上线前审核,以快速发现数据库质量问题。其中,第二数据库语句可以包括上线前的数据库语句中的一条或多条。
具体地,本公开的实施例可以响应于数据库的上线前审核信号,获取该数据库中的第二数据库语句,并执行步骤S202。其中,此处的上线前审核信号可以是在数据库上线之前,服务器自动触发对该上线前的数据库的审核操作而产生的信号。
步骤S202,确定第二数据库语句中不符合预设规则的数据库语句。
在本公开的实施例中,已经预先设定好了数据库的审核规则,即预设规则。该预设规则中可以包括三个类别,分别是强制、高危、建议,其中,强制表示必须要修改的数据库语句,高危表示最好进行修改的数据库语句,建议表示可以修改也可以不修改的数据库语句。
预设规则中的强制类别例如可以包括如下要素:库名控制在32个字符以内;创建数据库时必须显示指定字符集且字符集只能是utf8或者utf8mb4;建表时必须有comment,等等。
预设规则中的高危类别例如可以包括如下要素:禁用带limit的更新语句例如update|delete1…where a=XXlimitXX*-;禁止使用关联子查询例如update t1set…where name in(select name from where…),等等。
预设规则中的建议类别例如可以包括如下要素:水平分表尽量用取模方式,日志、报表类数据建议采用日期进行分表;创建表时强制要求主键为id、类型为int或bigint,且为auto increment;对于有auto increment属性字段的表的插入操作,并发需要控制在20以内,等等。
需要说明的是,对于各个类别的具体定义,可以根据实际情况进行调整,本公开的实施例对此不做限定。
在本公开的实施例中,可以自动确定出第二数据库语句中的哪些数据库语句不符合预设规则,这些不符合预设规则的数据库语句即为低质的、设计不合理的语句。具体地,对于每一条第二数据库语句,可以判断该第二数据库语句是否满足预设规则中的要素,如果不满足,则表明该第二数据库语句为不符合预设规则的数据库语句。
例如,对于第二数据库语句create table tab_new like tab_old,通过将createtable tab_new like tab_old与预设规则中的要素进行比较,发现create table tab_newlike tab_old中的库名不符合“库名控制在32个字符以内”这个要素,则可以认为createtable tab_new like tab_old是不符合预设规则的数据库语句。
步骤S203,基于不符合预设规则的数据库语句生成修改建议报告,其中,第一数据库包括基于修改建议报告对不符合预设规则的数据库语句进行修改得到的数据库语句和第二数据库语句中符合预设规则的数据库语句。
根据本公开的实施例,基于不符合预设规则的数据库语句生成修改建议报告可以是:确定预设规则中的不符合预设规则的数据库语句对应的要素,确定不符合预设规则的数据库语句的类别;以及基于不符合预设规则的数据语句、不符合预设规则的数据库语句的类别以及不符合预设规则数据库语句对应的要素,生成修改建议报告。
其中,确定预设规则中的不符合预设规则的数据库语句对应的要素可以是,将该不符合规则的数据库语句与预设规则中的所有要素一一进行对比,若该不符合预设规则的数据库语句不符合某个要素,则该要素即为该不符合预设规则的数据库语句对应的要素。确定不符合预设规则的数据库语句的类别可以是,判断该对应的要素所属的类别,将该所属的类别作为该不符合预设规则的数据库语句的类别。
下面举例说明如何生成修改建议报告。
例如,有四条第二数据库语句,分别是create table tab_new like tab_old、drop table tabname、alter table tabname add column col type、drop indexidxname。将这四条第二数据库语句分别比照预设规则,得出create table tab_new liketab_old不符合强制类别中设定的规则,具体是create table tab_new like tab_old中的库名不符合“库名控制在32个字符以内”;还得出了alter table tabname add column coltype不符合建议类别中设定的规则,具体是alter table tabname add column col type中的表的主键不符合“创建表时强制要求主键为id、类型为int或bigint,且为autoincrement”。此时,可以根据上述信息生成修改建议报告,即该修改建议报告中可以包括两条对应关系,其中一条对应关系为:不符合预设规则的数据库语句为“create table tab_new like tab_old”、类别为“强制”、对应的要素为“库名控制在32个字符以内”;另一条对应关系为:不符合预设规则的数据库语句为“alter table tabname add column coltype”、类别为“建议”、对应的要素为“创建表时强制要求主键为id、类型为int或bigint,且为auto increment。”
需要说明的,本公开的实施例还可以审核第一数据库语句的文本本身是否符合预设规则、第一数据库语句的执行计划是否符合预设规则、第一数据库语句的执行特征是否符合预设规则,等等,本公开的实施例在此不再一一介绍。
应该理解,针对本公开的实施例,第一数据库语句可以是修改后的数据库语句,也可以是第一数据库语句中符合预设规则的数据库语句,其中,该修改后的数据库语句可以是工程师根据修改建议报告对不符合预设规则的数据库语句进行修改得到的。
本公开的实施例,通过修改建议报告的形式反馈给研发工程师进行问题整改,可以将低质的、设计不合理的数据库语句排查解决掉,防止问题流入生产(即上线),对应用提前进行把控从而保证后端的性能稳定。
此外,本公开的实施例在完成数据库上线前的自动审核之后,还可以通过有邮件的形式告知对应的工程师进行人工审核。
作为一种可选的实施例,该基于漏洞修复的数据库优化方法还可以包括:响应于数据库的修改信号,确定至少一条待修改数据库语句;以及对所述至少一条待修改数据库语句中的进行备份。
在本公开的实施例中,在数据库上线后,若出现故障需要修改第一数据库语句时,可以先确定出哪些数据库语句修改进行修改,即确定出至少一条待修改数据库语句,然后对该至少一条待修改数据语句进行备份,得到备份数据库语句,还可以将该备份数据库语句暂存到备份服务器中,必要时可以实现数据回滚。
例如,对于至少一条待修改数据语句中的各条,可以解析DML语句为select语句,从而备份数据,并且还可以将DML语句解析为反向操作语句并利用已备份的数据实现回滚操作。
作为一种可选的实施例,可以响应于工单管理请求,对生产变更的工单和/或数据修复的工单进行管理,其中,管理可以包括历史工单查看、修改、删除、报表统计等等。
图3示意性示出了根据本公开实施例的基于漏洞修复的数据库优化方案的示意图。
如图3所示,该基于漏洞修复的数据库优化方案可以两部分:测试环境和生成环境,其中,测试环境又称为上线前审核,生产环境又称为上线后审核。在测试环境中,对于待审核或者待执行的数据库语句例如至少一条第二数据库语句,研发工程师可以提交审核或者执行请求,然后审核引擎(包括预设规则)可以对该至少一条第二数据库语句进行审核,并可以生成修改建议报告。其中,可以审核的数据库可以包括但不限于以下任意一种或几种:Oracle数据库、MySQL数据库、Postgresql数据库。在生产环境中,可以根据优化引擎(包括优化模块)对上线后的数据库例如至少一条第一数据库语句进行优化,并可以生成优化语句和/或优化建议报告(即图中的生产DB性能报告/优化建议)。另外,在生产环境中,还可以对待修改数据库语句进行备份,以便在必要时能够实现数据回滚。
图4示意性示出了根据本公开实施例的基于漏洞修复的数据库优化系统的框图。
如图4所示,该基于漏洞修复的数据库优化系统400可以包括第一获取模块410、第二获取模块420、输入模块430和生成模块440,其中:
第一获取模块410用于响应于数据库的上线后审核信号,获取第一数据库语句。
第二获取模块420用于获取优化模型,其中,优化模型用于针对输入其中的数据库语句输出对应的优化建议。
输入模块430用于将第一数据库语句输入优化模型,以得到优化模型输出的针对第一数据库语句的优化建议。
生成模块440用于根据针对第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
本公开提供的基于漏洞修复的数据库优化系统,在接收到数据库的上线后审核信号之后,可以获取该数据库中的第一数据库语句,并将第一数据库语句输入到预先设定好的优化模型中,以使得该优化模型可以输出针对第一数据库语句的优化建议,再根据这些优化建议,生成优化数据库语句和优化建议报告中的一个或多个。其中,若是生成优化数据库语句则可以实现自动优化,若是生成优化建议报告,则工程师可以根据优化建议报告对第一数据库语句进行优化。基于此,本公开的实施例可以提升系统的可用时间,降低线上生产故障,避免现有技术中由于未对数据库语句进行优化导致系统的可用时间减少且线上生成故障的几率增大的缺陷。
作为一种可选的实施例,输入模块可以包括:获取单元,用于获取多条映射关系,其中,映射关系中包括历史数据库语句以及针对历史数据库语句的优化建议的映射关系;第一确定单元,用于从多条映射关系中确定出与第一数据库语句对应的映射关系;以及处理单元,用于根据与第一数据库语句对应的映射关系,得到针对第一数据库语句的优化建议。
作为一种可选的实施例,第一确定单元可以包括:计算子单元,用于计算多条映射关系中各条映射关系的历史数据库语句与第一数据库语句的相似度,得到多个相似度;确定子单元,用于确定多个相似度中数值最大的相似度;以及处理子单元,用于将多条映射关系中与数值最大的相似度对应的映射关系作为与第一数据库语句对应的映射关系。
作为一种可选的实施例,生成模块包括:第一生成单元,用于在第一数据库语句中存在满足预设条件的数据库语句的情况下,根据针对满足预设条件的数据库语句的优化建议生成优化数据库语句;第二生成单元,用于在第一数据库语句中存在不满足预设条件的数据库语句的情况下,根据针对不满足预设条件的数据库语句的优化建议生成优化建议报告。
作为一种可选的实施例,该基于漏洞修复的数据库优化系统还可以包括:第三获取模块,用于响应于数据库的上线前审核信号,获取第二数据库语句;第一确定模块,用于确定第二数据库语句中不符合预设规则的数据库语句;以及处理模块,用于基于不符合预设规则的数据库语句生成修改建议报告,其中,第一数据库包括基于修改建议报告对不符合预设规则的数据库语句进行修改得到的数据库语句和第二数据库语句中符合预设规则的数据库语句。
作为一种可选的实施例,处理模块可以包括:第二确定单元,用于确定不符合预设规则的数据库语句对应预设规则中的要素;第三确定单元,用于确定不符合预设规则的数据库语句的类别;以及第三生成单元,用于基于不符合预设规则的数据库语句、对应预设规则中的要素以及类别,生成修改建议报告。
作为一种可选的实施例,该基于漏洞修复的数据库优化系统还可以包括:第二确定模块,用于响应于数据库的修改信号,确定至少一条待修改数据库语句;以及备份模块,用于对至少一条待修改数据库语句进行备份。
图5示意性示出了根据本公开实施例的适于实现基于漏洞修复的数据库优化方法的计算机设备的硬件架构示意图。本实施例中,计算机设备500是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图所示,计算机设备500至少包括但不限于:可通过系统总线相互通信连接存储器510、处理器520、网络接口530。其中:
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是计算机设备500的内部存储模块,例如该计算机设备500的硬盘或内存。在另一些实施例中,存储器510也可以是计算机设备500的外部存储设备,例如该计算机设备500上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器510还可以既包括计算机设备500的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于计算机设备500的操作系统和各类应用软件,例如基于漏洞修复的数据库优化方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制计算机设备500的总体操作,例如执行与计算机设备500进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在计算机设备500与其他计算机设备之间建立通信连接。例如,网络接口530用于通过网络将计算机设备500与外部终端相连,在计算机设备500与外部终端之间的建立数据传输通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图5仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器510中的基于漏洞修复的数据库优化方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本发明。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于漏洞修复的数据库优化方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于漏洞修复的数据库优化方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于漏洞修复的数据库优化方法,其特征在于,包括:
响应于数据库的上线后审核信号,获取第一数据库语句;
获取优化模型,其中,所述优化模型用于针对输入其中的数据库语句输出对应的优化建议;
将所述第一数据库语句输入所述优化模型,以得到所述优化模型输出的针对所述第一数据库语句的优化建议;以及
根据针对所述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据库语句输入所述优化模型,以得到所述优化模型输出的针对所述第一数据库语句的优化建议,包括:
获取多条映射关系,其中,所述映射关系中包括历史数据库语句以及针对所述历史数据库语句的优化建议的映射关系;
从多条映射关系中确定出与所述第一数据库语句对应的映射关系;以及
根据所述与所述第一数据库语句对应的映射关系,得到针对所述第一数据库语句的优化建议。
3.根据权利要求2所述的方法,其特征在于,所述从多条映射关系中确定出与所述第一数据库语句对应的映射关系,包括:
计算所述多条映射关系中各条映射关系的历史数据库语句与所述第一数据库语句的相似度,得到多个相似度;
确定所述多个相似度中数值最大的相似度;以及
将所述多条映射关系中与所述数值最大的相似度对应的映射关系作为与所述第一数据库语句对应的映射关系。
4.根据权利要求1所述的方法,其特征在于,所述根据针对所述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告,包括:
若所述第一数据库语句中存在满足预设条件的数据库语句,则根据针对所述满足预设条件的数据库语句的优化建议生成所述优化数据库语句;
若所述第一数据库语句中存在不满足所述预设条件的数据库语句,则根据针对所述不满足所述预设条件的数据库语句的优化建议生成所述优化建议报告。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于数据库的上线前审核信号,获取第二数据库语句;
确定所述第二数据库语句中不符合预设规则的数据库语句;以及
基于所述不符合预设规则的数据库语句生成修改建议报告,其中,所述第一数据库语句包括基于所述修改建议报告对所述不符合预设规则的数据库语句进行修改得到的数据库语句和所述第二数据库语句中符合所述预设规则的数据库语句。
6.根据权利要求5所述的方法,其特征在于,所述基于所述不符合预设规则的数据库语句生成修改建议报告,包括:
确定所述不符合预设规则的数据库语句对应所述预设规则中的要素;
确定所述不符合预设规则的数据库语句的类别;以及
基于所述不符合预设规则的数据库语句、所述对应所述预设规则中的要素以及所述类别,生成所述修改建议报告。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于数据库的修改信号,确定至少一条待修改数据库语句;以及
对所述至少一条待修改数据库语句进行备份。
8.一种基于漏洞修复的数据库优化系统,其特征在于,包括:
第一获取模块,用于响应于数据库的上线后审核信号,获取第一数据库语句;
第二获取模块,用于获取优化模型,其中,所述优化模型用于针对输入其中的数据库语句输出对应的优化建议;
输入模块,用于将所述第一数据库语句输入所述优化模型,以得到所述优化模型输出的针对所述第一数据库语句的优化建议;以及
生成模块,用于根据针对所述第一数据库语句的优化建议,生成优化数据库语句和/或优化建议报告。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811528425.4A CN109753490A (zh) | 2018-12-13 | 2018-12-13 | 基于漏洞修复的数据库优化方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811528425.4A CN109753490A (zh) | 2018-12-13 | 2018-12-13 | 基于漏洞修复的数据库优化方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109753490A true CN109753490A (zh) | 2019-05-14 |
Family
ID=66402750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811528425.4A Pending CN109753490A (zh) | 2018-12-13 | 2018-12-13 | 基于漏洞修复的数据库优化方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753490A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287116A (zh) * | 2019-06-27 | 2019-09-27 | 苏宁消费金融有限公司 | 多数据库校正方法 |
CN111400338A (zh) * | 2020-03-04 | 2020-07-10 | 平安医疗健康管理股份有限公司 | Sql优化方法、装置、存储介质及计算机设备 |
CN112783867A (zh) * | 2021-01-29 | 2021-05-11 | 李阳 | 为满足实时大数据业务需求的数据库优化方法及云服务器 |
CN117389996A (zh) * | 2023-12-11 | 2024-01-12 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
-
2018
- 2018-12-13 CN CN201811528425.4A patent/CN109753490A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287116A (zh) * | 2019-06-27 | 2019-09-27 | 苏宁消费金融有限公司 | 多数据库校正方法 |
CN110287116B (zh) * | 2019-06-27 | 2022-08-02 | 苏宁消费金融有限公司 | 多数据库校正方法 |
CN111400338A (zh) * | 2020-03-04 | 2020-07-10 | 平安医疗健康管理股份有限公司 | Sql优化方法、装置、存储介质及计算机设备 |
CN111400338B (zh) * | 2020-03-04 | 2022-11-22 | 深圳平安医疗健康科技服务有限公司 | Sql优化方法、装置、存储介质及计算机设备 |
CN112783867A (zh) * | 2021-01-29 | 2021-05-11 | 李阳 | 为满足实时大数据业务需求的数据库优化方法及云服务器 |
CN117389996A (zh) * | 2023-12-11 | 2024-01-12 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
CN117389996B (zh) * | 2023-12-11 | 2024-03-29 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753490A (zh) | 基于漏洞修复的数据库优化方法、系统、设备及介质 | |
CA2701046C (en) | Analysis of a system for matching data records | |
CN106682097A (zh) | 一种处理日志数据的方法和装置 | |
US20090292711A1 (en) | Constraints With Hidden Rows in a Database | |
CN106648859A (zh) | 一种任务调度方法和装置 | |
US10127264B1 (en) | Techniques for automated data analysis | |
CN103473672A (zh) | 企业级数据中心的元数据质量稽核系统、方法及平台 | |
US20100312592A1 (en) | Confirming enforcement of business rules specified in a data access tier of a multi-tier application | |
CN109299074B (zh) | 一种基于模板化数据库视图的数据校验方法及系统 | |
CN106682099A (zh) | 一种数据的存储方法和装置 | |
US11615076B2 (en) | Monolith database to distributed database transformation | |
US10262055B2 (en) | Selection of data storage settings for an application | |
CN106681808A (zh) | 一种任务调度方法和装置 | |
CN114218218A (zh) | 基于数据仓库的数据处理方法、装置、设备及存储介质 | |
CN106708965A (zh) | 一种数据的处理方法和装置 | |
CN111124917A (zh) | 公共测试用例的管控方法、装置、设备及存储介质 | |
CN111367982B (zh) | 导入tririga基础数据的方法、装置、计算机设备及存储介质 | |
CN116541372A (zh) | 一种数据资产治理方法及系统 | |
CN110737432A (zh) | 一种基于词根表的脚本辅助设计方法及装置 | |
CN112486532A (zh) | 配置文件的管理方法、装置、电子设备及存储介质 | |
CN116701355A (zh) | 数据视图处理方法、装置、计算机设备及可读存储介质 | |
CN115495587A (zh) | 一种基于知识图谱的告警分析方法及装置 | |
CN111352818B (zh) | 应用程序性能分析方法、装置、存储介质及电子设备 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
US20220292136A1 (en) | Method and system for generating a digital representation of asset information in a cloud computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |