SQL审核-让DBA走向开发前端

你是否面临新上线软件的性能问题?

  • 数据量和并发量急剧上升

  • 上线周期更短,测试时间被压缩

  • 大部分应用代码中SQL等未经审核即上线

  • 现有 SQL 审核方式低效、低质、流于形式

  • 开发人员质量参差不齐,SQL 水平有限,常写出杀手 SQL

我们都知道,在 DBA 所优化的数据库环境中,绝大多数性能问题其实是由于 SQL 编写不当导致的,一个开发环境中,众多的程序员难免引入一个又一个的或初级或高端的 SQL 隐患,如何去规避这些问题,减少系统上线后的运行故障呢?

什么是SQL审核?

SQL审核是将 SQL 质量审核和优化这项任务,从 DB 端提取到研发端,通过擅长 SQL 的开发 DBA 和开发团队一起修正系统的 SQL,找出问题、修复问题,提升系统的健壮性和稳定性,从而保证整个系统的运维建设质量。这与近几年兴起的DevOps理念不谋而合。

对于未上线系统,通过前期的SQL审核管控,将80%的SQL问题消灭在萌生阶段,对于线上运行系统,发现和解决潜在的性能问题,可做到提前预防,防患于未然。

SQL审核的意义

SQL审核,让DBA由系统的急救医生转身成为系统的保健医生

1、DBA参与应用代码开发测试过程:给开发人员提供专业的数据库开发及优化建议

2、优化前置:在应用代码上线前根据业务需求设计高效的SQL、索引

3、控制变更风险:预先评估应用开发中表结构变更、SQL变更对运行中应用的影响,确定合适的变更窗口,变更方案。

SQL审核产品工具 - z3 

云和恩墨基于Oracle数据库的SQL审核产品工具 - z3 ,通过内置的算法引擎,可定制的抓取数据库中执行的SQL及其详细数据,通过过滤分析,进行量化的积分趋势展现,并将SQL问题高亮显示,指导程序员的优化分析,并可以通过内置的工作流由DBA进行优化,变更管理同时被内置。

z3产品可服务于软件开发的全生命周期,在应用设计阶段通过审核,对不合理的表结构做变更,开发测试阶段对SQL质量严格把关,并在系统发布后进行SQL扫描,帮助DBA快速发现系统隐患及根源。

z3审核能够应用于开发库,测试库和已经上线的生产库,审核流程如下图所示:

06610f5f21f3cb6027dd0e330878dfb0.png

通过z3能够找出问题SQL清单,按照设置的阀值发出预警,并对问题自动分析生成报告。这三类输出能够满足不同人员对系统的了解需求。一般来说,DBA会更关注问题SQL清单和预警,开发人员更关注问题问题SQL清单和报告,而项目经理则会偏向于关注预警和报告,这样就能使得每个人从自己能理解的维度去看待系统的问题。

这三类输出中最核心的是问题SQL清单,对于问题SQL的处理流程如下:

eb3919fd2221ea741737d8c7a79d59b7.png

对于SQL审核,一般分为静态SQL审核、动态SQL审核。静态SQL审核是指直接分析未在数据库上运行的SQL代码,系统分析SQL写法和其执行计划,动态审核是指分析已经在数据库上运行的SQL。

静态SQL审核过程如下:由DBA分析问题SQL,如果合格(系统没有自动判断到业务逻辑),则忽略。如果不合格,DBA说明不合格理由,交于开发进行修改,最后再次由DBA审核。

78602e431a54bdc94ff3f0e9b504435c.png

如果审核结果不是SQL的原因而是表结构不合理导致的,则需要开发人员重新设计表结构,然后再进行测试。

7b5920557f31620cbaf42279305ecd5f.png

使用z3的时候,需要首先将自己的数据库在z3上做好配置。如果以库为单元,则审核的总报告如下:

9535525a8a8f103be8557a0bb8b9fa2a.png

主要是审核对象是表,索引和应用SQL。审核的结果会以分数给出,分数越低,说明越不合格。

02d2cdec247ba7a0793229a2a97c8435.png

局部审核,重点会关注SQL。可根据审核项、SQL出现时间选择SQL,支持按照关键词查找SQL

8975260def21d43e6ceafb82250f2172.png

问题SQL详情包括审核详、执行计划、访问该SQL的相关应用等情

5348beef8166d7c703c9e4ffaaa9bfda.png

如果是表结构的问题,表结构审核信息包括:基础信息、列、索引、主外键等

3248f02d0c1359e3904200673eb522c9.png

z3能够对数据字典进行细致的审核

00804b4b30b6bf44eac692e23c5c397b.png

开发、测试人员可以将问题SQL以工单形式提交给专职DBA进行审核。DBA审核开发人员提交的工单、填写审核意见、反馈给开发,开发人员根据业务需求创建表结构变更项目,可以将变更内容发布到多个开发、测试库。

c32adecb25ed76f28d8b452225cf785d.png

创建项目时需要关联到需求所在应用系统、应用模块,选择参与项目的人员

客户案例:

z3SQL审核软件现在已经在很多企业做过尝试,并取得较好的成果。

上海某金融系统的SQL问题很严重,在审核的100808条SQL 语句中,共有87248条有问题

1e24e153e22ea325dcb0a1edb7c36524.png

通过z3审核,我们找到了对应发生问题最多的操作用户。

92ee028cb67d07cfa28152eec34b851c.png

除此,检测还发现以下问题

1、系统上存在大量无用的索引。

2594878011fb8b85650fcf5beea211bb.png

2、未使用绑定变量的SQL导致系统中存在大量的相似SQL。

2fd583256aad4bdb25c05aaee24b6ddc.png

最终我们将这些问题SQL揪出来进行了重写。

df46213fde7100d98f35b0effabfe9fa.png

共优化了780条SQL,其中500多条是改写了SQL,剩下了进行了合理的索引重设计。

完成优化后,系统性能有了明显的提升

58cfac03979f4e0f512d553a2173ca5a.png

云和恩墨的z3 SQL 审核软件已经在江苏移动,国家电网、江苏电信等十数个大型企业进行过尝试,并收到很好的效果,得到广大用户的一致认可。

云和恩墨提供的SQL审核服务总共包含以下方面:

1、SQL审核自动化工具部署:部署自动化工具、监控、跟踪数据库SQL性能

2、SQL开发标准制定:参与SQL代码开发规范得到制定,为开发人员提供科学可靠的SQL开发方法

3、SQL核心对象审核:通过对业务的了解,针对SQL访问的表和索引提供对应的设计、改进建议,确保需要访问的表和索引能够与开发人员的SQL代码及业务需求相配合,通过最佳执行计划提升SQL性能

4、SQL代码审核:通过开发代码与性能测试环节进行SQL捕获并审核,给出相应的SQL优化分析和改写建议,并反馈指导开发环节。

5、SQL审核评分:在SQL审核与核心对象审核完成后,将审核结果导入SQL审核评分系统,对无索引、笛卡尔积、没有使用绑定变量、查询条件与列类型不匹配等各类低效的SQL问题,计算出系统SQL应用的健康分值。

SQL审核,让DBA走向开发前端,运维不再被动救火!

在移动互联和行业开放融合的大趋势下,云和恩墨将致力于做广大用户最忠实的数据管家,为各组织中最核心的数据资产,提供端到端的产品和服务,完成以下使命:

  • 构建并支撑“安全、连续、高效、敏捷、经济”的数据环境。

  • 整合分析,洞察数据价值,驱动组织的升级转型发展。

云和恩墨

数据驱动,成就未来。整合业界顶尖的技术与合作伙伴资源,围绕数据及相关领域,提供解决方案和专业服务。

IT基础架构

zData一体机 - 分布式存储解决方案

数据架构

Oracle  SQL DB2 MySQL NoSQL

专项服务:架构 / 安全 / 高可用 / 容灾 / 优化 / SQL 质量管控

运维服务:运维服务  | 代维服务

人才培养:个人认证 | 企业内训

软件产品:SQL审核 - Z3 | 监控 - Zone | 数据恢复 - ODU|智能巡检 - Bethune

应用架构

应用软件开发:数据建模 | SQL审核和优化 | 中间件服务

业务架构

电子渠道(网络销售)分析系统 | 数据治理

恩墨学院

恩墨学院是云和恩墨(北京)信息技术有限公司旗下的培训事业部,创业数年专注于数据库认证、技能培训,以专业的讲师塑造品牌,以专业的训练保证就业,目前已经发展成为国内数据库领域培训领导品牌。

3e7397f77416f3e949c00f32734275ae.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值