SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
SQL审核工具 SQLE 企业版近期推出了Oracle审核插件的第一个测试预览版。我们采集了过往我们在客户那碰到的问题和行业专家的建议,整理了一大批Oracle审核规则。这个版本我们从中挑选出现频次最高的以及影响范围最大一批规则加入到了Oracle审核插件中,这些规则能覆盖大多数客户的大多数场景,却又不会对客户使用产生额外的负担。在后续的时间内,我们将推出的Oracle审核插件逐步完善规则的拼图。接下来的内容将对高频规则给出我们的理解。插件的本身开发之前已经做过介绍,开发文档参考:https://actiontech.github.io/...。
文章主要分为以下四部分内容:
一、SQLE 项目介绍
二、规则介绍
三、规则列表
四、后续计划
一、SQLE 项目介绍
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。
SQLE 获取
| 类型 | 地址 || --- | --- | | 版本库 | https://github.com/actiontech... | | 文档 | https://actiontech.github.io/... | 9000 || 发布信息 | https://github.com/actiontech... | | 数据审核插件开发文档 | https://actiontech.github.io/... || 社区版在线体验 | http://124.70.158.246:8888/ <br/>超级管理员:admin,密码:admin。 ||企业版在线体验|http://124.70.158.246:8889/ <br/>用户:admin,密码:admin。|| 类型 | 地址 |
二、规则介绍
SQLE 根据规则的使用场景,将现有的规则分为以下几个类别:
- DDL规范类
该类规则主要是对表定义做了不同个维度包括字段,索引的各方面属性等方面进行限制,规则值可以根据自己业务场景进行配置,满足绝大部分表设计的规范。
- 查询类的规范
该类规则主要是支持一些常见可能会影响性能的语句,具体可根据自己的规范选择性开启关闭。
- 使用建议类的规则
该类规则涉及一些公司的数据库使用红线,禁止使用来或避免一些潜在的使用上或者维护上的风险。
- 命名规范
该类规则主要针对一些表名、字段名、索引名格式进行限制,主要作用还是作为统一命名标准提高可读性。
- 执行计划类
该类规则主要是在审核SQL时借助执行计划输出,解读执行计划特征,对于特定的影响性能的SQL给予用户提示。
三、规则列表
- 表建议使用主键;
- 表不建议使用外键;
- 索引个数建议不超过阈值;
- 表字段过多;
- 复合索引的列数量不建议超过阈值;
- 表不建议使用指定的字段类型;
- 表名、列名、索引名的长度不能大于指定字节;
- 数据库对象命名禁止使用关键字。
- 不建议使用select *;
- delete 和 update 语句,必须带where条件;
- 避免使用 having 子句;
- 不推荐使用子查询。
- 禁止除索引外的 drop 操作;
- 禁止使用视图;
- 禁止使用触发器;
- 单条SQL不建议过长。
- unique索引必须使用固定前缀;
- 普通索引必须使用固定前缀。
- 表关联存在笛卡尔积;
- 表关联嵌套循环层次过多;
- 表关联个数过多;
- 对大表进行全表扫描;
- 存在索引执行跳跃扫描;
- 对大索引执行全扫描。
四、后续计划
- Oracle 审核插件将进行第二个预览版的开发,持续添加规则;
- PostgreSQL 插件的开发正在进行中;
- TiDB插件的开发将在6月份开始。
转载自:https://segmentfault.com/a/1190000041933982