GaussDB之SQL Audit,面向应用开发的SQL审核工具


前言
我们先从一个SQL语句说起(以某传统单机数据库为例)。

也许这就是我们业务代码中潜藏的一个SQL语句,对于一个普通开发者来说,这个语句编写工整,逻辑清晰,没有什么问题,可以直接推到代码仓中交付上线。但是一个有经验的开发者或数据库管理员可能会发现这个SQL存在诸多的优化点:

两张表的id字段是否有索引?
like语句不符合最左匹配原则,能否改写?
test_1表where条件中的create_time判断不符合单边原则,无法走索引,可以改写;
union会对结果集去除,效率较低,能否换成union all?
test_2表的id字段被函数引用,也可能用不上索引,可以优化;
test_2表是否存在id和name联合索引,能否加hint,指定特定索引提高查询性能?
貌似经过上述的分析后,这个SQL可以焕然一新,在该数据库上飞一样地跑起来,但这就完了吗?其实并没有,在单机数据库上也许已经优化到了极致,可当我们的数据库是一个分布式数据库呢?它可能又会带来新的性能问题,我们要考虑where条件中的id是否是分布键,concat函数是否会影响算子的下推……这一系列的问题都会产生。

这实际就是我们所面临的现状,开发者的技术能力良莠不齐,DBA对数据库知识的局限性导致烂SQL无处不在,而且随着数据库的不断变更或演进,一些好的SQL也可能逐步变成需要优化的烂SQL, 我们要时刻不断地找寻它们的踪迹。

SQL Audit审核工具介绍
华为内部有很多业务部门,对传统单机数据库、MySQL、PostgreSQL等各种数据库都有深度的使用,也一直备受烂SQL的困扰,随着GaussDB在内部业务系统的规模应用,现存SQL在GaussDB中能否高质量运行也面临挑战,于是我们开发了SQL Audit工具,根据公司内部各业务部门多年积累的SQL开发规范和GaussDB数据库的优秀实践,整理出SQL审核规则上百条,对命名规范、表结构/索引设计、SQL性能优化、分布键及算子下推等常见影响SQL质量的问题都可以做深入的分析和审核 ,同时我们又开发了一些插件,直接集成到开发的流水线中,自动从代码仓获取SQL语句,做到一键审核。

SQL审核的核心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值