SQLE在SQL审核的探索和实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. SQLE在SQL审核上的探索和实践
2. 目 录
1 SQLE 对 SQL 审核的理解
2 SQL 质量管控的落地方案
3 SQLE 产品的实践
4 开源现状和规划
CONTENTS
3. 01
SQLE对SQL审核的理解
4. 案例分享
案例:表字符集不一致导致部分场景下索引失效
创建三张表,分别使用不同的字符集 utf8 和 utf8mb4
5. 案例分享
案例:表字符集不一致导致部分场景下索引失效
对比执行计划发现当字段的字符集不一致,表关联字段未命中索引
6. 案例分享
案例:表字符集不一致导致部分场景下索引失效
解决方案:
• 事后诊断(慢日志等)
• 事前建立规范(统一项目
内库表字符集)
每张表插入80万数据,执行时间差异大
7. SQL开发规范现状
推进自动化SQL审核,
建设SQL质量管控平台
8. SQL开发周期
开发测试人员
需求创建
代码开发
持续集成
运维人员
测试环境
部署测试
代码开发
•
•
库表结构设计(DDL)
业务逻辑设计(CRUD)
UAT环境
部署测试
代码测试
•
•
功能测试
性能测试
•
•
•
生产部署
上线 生产运行
发布上线 生产运维
初始化库表
数据初始化
业务变更
SQL流转方向
几天,不影响生产
几小时,不影响生产
几天或几周,影响项目周期
几周或几个月,影响生产
问题越早解决成本越低!
•
•
•
运行业务SQL
性能监控
问题诊断
9. 02
SQL质量管控的落地方案
10. 落地需要考虑的问题
• 如何达到目标(确立目标,提高质量是目标)
• 使用什么方法
• 其他因素
11. 提高SQL质量要考虑的问题
更新规则库
优化SQL
SQL规则
SQL质量
低
审核
结果
审核
SQL质量
高
优化规范
SQL 质量正反馈
如何设计SQL规范: 质量如何量化: 如何把握规范力度 :
• 规范的指定(已有规范标准,行业经验) • 评分 • 规则的灵活性
• 审核提示(分级,要不要改,优先级问题) • 审核报告 • 旁路模式(白名单)
• 修改建议(怎么改) • 统计报表
严格
宽松
12. 落地需要考虑的问题
• 如何达到目标(确立目标,提高质量是目标)
• 使用什么方法(找到适合自己的审核模式)
• 其他因素
13. 不同阶段对应的审核手段
开发测试人员
运维人员
测试环境
部署测试
UAT环境
部署测试
生产部署
上线 生产运行
代码测试 发布上线 生产运维
前期自助审核,及时反馈 提前介入,把握全局 规范流程,严控关口 持续监控,发现问题
代码静态审核: 测试数据审核: 统一入口: 监控数据审核:
需求创建
代码开发
持续集成
代码开发
•
•
IDE 审核
集成 CI/ CD 代码扫描
几小时
•
•
库表元信息审核
应用程序审核
•
•
上线流程审核
SQL 客户端审核
•
•
慢日志审核
TopSQL 审核
14. 几个例子
15. 快速落地,不改变现有工作流
代码开发
发布上线
代码测试
发布上线
采集SQL
采集SQL
库表元信息审核
CI/CD 静态扫描
慢日志审核
优化 SQL
测试环境
1. 低入侵性
生产环境
16. 统一SQL执行入口
代码开发
发布上线
代码测试
执行SQL
执行SQL
发布上线
执行SQL
SQL 客户端入口 (审核)
慢日志审核
优化 SQL
测试环境
生产环境
1. SQL审核覆盖面广(回收数据库权限,统一SQL客户端审核)
17. 改变开发流程
代码开发
发布上线
代码测试
采集SQL
IDE审核
发布上线
执行SQL
SQL上线审核
慢日志审核
优化 SQL
测试环境
1. 开发自助审核上线提工单,建立上线标准
2. 注重前期的SQL审核反馈
生产环境
18. 落地需要考虑的问题
• 如何达到目标(确立目标,提高质量是目标)
• 使用什么方法(找到适合自己的审核模式)
• 其他因素
• 数据库技术栈现状和规划(数据库类型支持度,后续是否规划)
• 既有系统的集成(流程对接,用户对接,登录对接,资源对接)
19. 03
SQLE实践
20. SQL规范的设计
21. SQLE集成专家经验,构建SQL规范标准
用户经验
SQLE
规则库
专家经验
SQL标准规范
信通院
《SQL质量管理平台能力分级要求》
专家经验沉淀规范标准 规则库覆盖广 审核结果分级展示
数百家客户经验沉淀 DDL规范、DML规范 error(必须整改)
爱可生专家经验沉淀 使用建议、全局配置 notice(建议整改)
信通院SQL质量管理标准 命名规范、索引设计 warn(开发建议)
社区用户反馈
22. 规则按需自定义,适配不同标准业务诉求(白名单/规则模板)
业务规则模板
根据不同业务特点,定制
不同审核模板,适配不用
业务需求
SQL白名单
有些SQL不符合规范,但是
必须通过审核上线,比如无
法推动的旧业务
23. 智能扫描
24. 智能扫描:多场景的审核模式
数据库
场景
•
•
•
•
•
MyBatis 扫描
库表元数据
阿里云 RDS 慢日志
慢日志
应用程序
• TopSQL
• MyBatis 扫描
• TopSQL
• 审计日志
25. 连库审核,抓取TOP SQL,全面分析、展示问题SQL
SQL采集灵活自定义
补充TOPsql审核结果图
采集频率、TOP数量自定义
审核周期自定义
自动排序,资源消耗一目了然
TOP SQL排序展示
执行时间、资源消耗、等待时间、物理读、
逻辑读
及时发现资源消耗高的SQL,效率提升
80%
26. 连库审核,抓取慢日志,全面分析、展示问题SQL
生产库SQL获取与审核
审核结果
(质量报告)
预警
(发给相关人员)
问题SQL优化
业务应用
生产
数据库
slow.log
定时获取
SQLE
自动生成质量报告 支持多种告警方式
质量报告(通过率、评分、优化建议) 邮件
支持下载 webhook
数据库
管理员
27. SQL审核上线
28. 标准化上线发布,杜绝问题SQL流向生产
SQL上线发布流程
需求创建
代码开发
持续集成
SQLe
审核
创建镜像
测试环境
部署测试
UAT环境
部署测试
SQLe
上线发布
生产运行
发布效率提升
变更SQL一键执行上线,提升
发布效率
建立标准化发布流程
所有发布必须通过平台执行,
线下人情上线减少100%,问题
SQL引起的性能问题减少60%
上线时间自定义
手动实时上线
定时上线
运维时间
29. 流程可编排自定义,无缝衔接内部流程,满足个性化需求
审核与上线流程根据实际场景按需自定义,满足企业内部不同流程管理要求
30. 统一的SQL客户端入口
31. 集成 CloudBeaver 作为 SQLE 的 SQL客户端
• 实现数据同步,双系统统一
登录;
• 自动拦截不合规SQL
32. 支持多数据库类型
32
33. 插件化的SQL审核内核
内置的审核插件:
已支持的审核插件:
34. 支持OpenAPI 对接
35. 对接- 接入
36. 标准HTTP API接口可与客户内部流程系统对接
开发人员
提交SQL
SQL审核平台
系统自动给
出分析结果
是
是否修改
修改SQL
否
DBA审批
SQL审核流程
否
是否通过
是
SQL复查
是否一致
开发人员
进行对比
否
是
OA流程审批
是否通过
是
DBA执行上线
否
OA流程提交的上线单
取消上线
37. 功能总结
38. SQLE主要功能特性总结
01.SQL审核规范
04. 审核管控的SQL操作入口
• 集成审核管控的CloudBeaver作为SQL
• 审核规则自定义(400+条)
客户端
• 规则模版
• 审核白名单
05. 支持数据库种类
02. 多场景审核
• 融合CI/CD,开发环境实时审核,
提前修改
功 能
特 性
• 内置MySQL审核插件
• 统一接口,可通过插件进行多数据库审
核扩展
• 数据库前置审核
• 数据库后置审核
06. 标准OpenAPI
03. SQL标准化上线流程
• 具备完整的工单审核流程,完善的
用户管理机制,DBA、开发、测试
均可按需进行功能申请
• Online DDL
• 定时上线
• 支持流程,用户,审核标准接
口对接
39. 项目案例
40. 某股份制银行——轻量
开发人员
项目背景:
提交SQL
该银行的数据中心拥有规模庞大的IT基础设施和种类繁多的线上和
SQL审核平台
开发测试项目,涉及到种类繁多的业务系统,需要一款优秀的
系统自动给
出分析结果
是
是否修改
修改SQL
否
爱可生提供SQLE解决方案,支持 SQL 审核,上线,回滚,支持
是否一致
开发人员
进行对比
否
是
OA流程审批
是否通过
是
DBA执行上线
审核 MySQL,MyCat,SQL Server。能够支持同时提交多条有
否
是否通过
SQL复查
环境安全上线。
解决方案:
DBA审批
是
SQL审核工具确保SQL审核质量,保障数据库规范落地,推进生产
否
关联的 SQL。 并在此方案基础上为该行提供如下功能:
OA流程提交的上线单
取消上线
• API:提供管理命令接口
• 语法解析器:提供sql语法语义检查
• 备份语句生成器:提供在线回滚语句
• 规则器:提供sql审核的规则
• 优化器:提供sql优化建议
• 轻量级SQL审核方案,极大的提升了SQL审核效率,推动
• 核心系统上线稳定运行。
性能优化和规则优化专家服务,低效SQL及时优化。
方案价值:
41. 某国有银行——完整
数据库管理员
云树DMP
解决方案
•
MySQL 8.0 高可用半同步集群
replication
MySQL 8.0 高可用MGR集群
MGR组复制
安装部署 配置变更
统一监控 统一告警
备份恢复 资源管理
巡检报告 性能诊断
架构变更 权限管理
SQL审核 用户管理
标准化、统一化运维
…
上海A机房
…
上海B机房
提供MySQL专业化服务。协助完善了集团内部的MySQL数
据库规范基线,确定MySQL的安装标准、服务管理标准、
高可用管理标准。
•
提供云树DMP平台产品,满足行内开源MySQL统一、标准
化运维管理、高效运维的要求,提升了运维效率。
•
提供SQL审核工具,与云树DMP平台产品无缝集成,提升
上线SQL质量,减小生产性能风险。
方案价值
• 完善MySQL开发规范,提高SQL审核效率。
• 完善MySQL运维规范体系,提升数据库运维水平。
• 同城双中心建设,满足同城RPO=0,RTO<30S的容灾建
设要求。
•
国产服务器、操作系统兼容部署,满足信创要求。
42. 04
SQLE开源现状与规划
43. SQLE开源现状
开源时间
2021年10月24日
开源
一年了
13 个版本
33+ 新功能
44. SQLE近期规划
https://github.com/actiontech/sqle
Feature:
V2.0
版本
• 更多类型的数据库
• 更多审核规则
• 更多的审核场景
• 审核规则引擎(自定义规则)
• 项目管理
• 集群模式
45. 技术即服务 Technology as a Service
谢 谢 观 看!