sql 占比_民生银行数据库SQL自动审核的探索与实践

ecc81d9587b255e68b18a3e795126bb9.png

请点击上方“民生运维人” 添加订阅!

01

背景

近几年,随着业务的增长、数字化转型加速、互联网金融业务快速发展和迭代,我行各系统数据库的数据量和并发量也在急剧增长。通过分析过去几年我行数据库的生产事件报告,发现SQL性能和对象可用性相关问题占到了相当的比例,在这样的背景下,我行决定引入SQL自动审核机制。

SQL审核的目标,是将SQL质量管理和优化的节点前移,由“部署生产->发现问题->SQL优化”变为“SQL评审->发现问题->SQL优化->部署生产”,通过在应用版本变更流程中增加SQL审核环节,引导开发人员形成SQL审核的意识,关注SQL性能和SQL书写规范,提前发现可能存在的隐患,进行修复,进而提升系统的健壮性和稳定性。通过审核工具的使用,有效地避免了以往人工方式低效、覆盖率低、依赖评审人技能水平等问题。

02

SQL审核的维度

SQL审核,就好比我们在野外捕鱼,首先要知道在哪里捕鱼产出比较高,可能捕到什么类型的鱼。通过梳理SQL审核的维度,有助于我们总结业务场景,防止遗漏。审核维度可按SQL来源、审核效果、审核对象三个方面进行分类。

按SQL来源分类:

42bd8a22180d37ba73d3bd67b5823f1a.png

按审核效果分类:

259ea1a31d8adf798bb07ad0389414db.png

按审核对象分类:

0c621cb844191ac44908dc8008cedb69.png

03

SQL审核规则

明确了捕鱼的地点,还得有适合工具,不然一网下去,鱼都漏出去了,也是不行的。SQL审核规则的有效性和覆盖面,直接决定了SQL审核的效果。以下将从规则的来源、级别、分类、模板几方面进行说明。

规则来源:审核规则的设计,主要来源于业内通用规范、我行数据库SQL开发规范、以往发生的事件报告总结以及数据库专家多年的运维经验,通过对这些规范和案例进行总结,设计触发条件和优化方案。

规则级别:根据对数据库性能和对象可用性的影响程度,可将规则分为“提示”、“警告”、“严重”三种级别。“提示”类一般为建议型,“警告”和“严重”级别是需要重点关注的,尤其“严重”类型,如无特殊情况,都是不可以通过审核的。

规则分类:我行审核规则支持DB2、Oracle、MySQL三种数据库类型,按照审核关注点的不同,可分为性能问题、开发规范、数据丢失风险、对象失效或错误语句几方面。

DB2主要规则如下图所示:

0ae71c40d014c3c79f12d3281e06c83d.png

针对每个审核规则,都需要有相应的说明信息,以DB2其中一个规则举例说明:

713277817add89680608da377e716963.png

规则模板:按照对接系统的不同,可将多个规则组合成不同的规则模板,在模板中对规则进行设置,以适应不同的业务需求,比如对接DevOps开发流程,需要审核所有规则,而对接运维视点则只需要审核书写规范和性能类规则即可。

04

SQL审核流程

有了捕鱼的地点和工具,下一步就是确定捕鱼的流程了,这期间需要各个岗位紧密配合共同努力才行。

首先确定SQL审核介入点,通过对我行应用版本发布流程的梳理,通常的开发流程为开发环境->UAT环境->版本环境,而每次生产版本更新前,都会在版本环境中进行部署验证,因此选择在发布版本环境前介入SQL审核。

然后确定审核人,按应用系统级别不同,A类系统由DBA负责审核,B类系统由应用运维负责审核、DBA辅助支持,以便达到人员配置和审核效果的平衡。

最后演示SQL审核的机制,示意图如下所示:

d8688c3477e3c0f9f6f9d042fdc6b2df.png

1) 开发人员申请发布版本环境,DevOps收集变更SQL和应用程序里的差异SQL,连同数据库信息一起发送给SQL审核服务API。

2) SQL审核服务API接受到请求后,连接CMDB,复核所获得的数据库信息是否正确,同时获得所属应用系统相关信息,在后台自动创建审核工单,此时可以在SQL审核前端页面查看到此审核单,状态为“待审核”。

3) SQL审核服务API将审核单号、数据库信息和SQL一并发送给SQL审核引擎。

4) SQL审核引擎接受到请求后,连接被审核数据库,按预定规则进行匹配,审核后的数据异步回传给SQL审核服务API。

5) SQL审核服务API更新审核单状态为“已完成”,此时可从SQL审核前端页面查看该次审核详情,同时会将审核结果及审核报告反馈给DevOps。DevOps根据审核结果进行后续操作的流程控制。

通过以上几个部分的说明,SQL审核的要点就介绍完了,接下来描述审核工具所具备的功能。

05

审核工具功能

作为数据库统一管理平台的模块之一,SQL审核工具与数据库统一管理平台其他模块紧密结合,可实现如下功能:

SQL 语句审核:新建或编辑SQL语句审核,手工录入或导入SQL,对SQL进行语法分析、执行计划审核,自动获取审核结果,评审人可对SQL审核结果进行批注。

手工添加SQL审核页面如下图所示:

e703872d411b88122a6af1bb4a974b75.png

审核结果展示:展示数据库连接信息、SQL明细、SQL执行计划、SQL所含对象详情、触发规则、触发次数等。

审核结果部分信息如下图所示:

590b04f221f86c0b7d5e1a2d11738a53.png

审核报告:可导出HTML形式的审核报告,内容保护包含结果展示的大部分信息。

增量SQL审核:结合数据库管理平台,获取重要系统每日增量TOP SQL,进行汇总合并后,对SQL进行审核,获得审核报告,并邮件给相关负责人,以便其了解数据库近期SQL运行情况。

数据统计:对审核数据按不同维度进行统计,比如获得前10个触发次数最多的规则、前10个问题最多的数据库、每日审核次数等,这些数据的统计,有助于了解审核质量,进而推动运维人员去优化问题较多的系统。

6. 结束语

以上是对SQL审核工具的介绍,目前审核工具正在我行逐步推广,A类系统已初见成效。部分工作还在持续完善阶段。相信随着系统和流程的优化,自动化程度的提高,加上开发和运维同事的支持,SQL审核工具能够发挥预期的效果,为数据库的稳定运行添砖加瓦。

  b4476ec324360d55bfcdab549dc85f27.png

李宁宁

    Oracle OCM及MySQL OCP,有多年数据库运维经验,现任职于民生银行信息科技部系统管理中心,主要负责SQL审核推广及MySQL运维相关工作。

  4d3ef8bc82f890b125f3b927a375bde1.png

史国畅

    十多年数据库行业经验,先后就职于百度、甲骨文等公司。现任职于民生银行信息科技部系统管理中心,主要负责Oracle、巨杉等产品运维相关工作。

  a95366ed81d974ef81b61455bf5c00b8.png

李腾

    民生银行信息科技部DBA,主要负责KAFKA相关运维工作。

2e92acc17cf285bb0a250a08829c505c.png 174bcad13600903016bbfda137ef88dd.png

编辑:民生运维文化建设小组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值