DTCC2016-平安数据库SQL审核平台.docxVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

平安数据库SQL审核平台

金海锋

现任平安集团数据库架构师。

拥有8年以上的数据库研发管理经验。

8年的金融行业从业经验。

擅长金融行业数据库应用架构设计。

丰富的数据库管理经验,一定的应用开发经验,掌握多门编程语言。

一次生产故障引发的思考

u故障现象:

前台大量业务功能无法使用,主机告警,CPU使用率接近100%,系统运行缓慢。

u故障分析:

一个高频SQL因隐式转换导致没有使用到高效索引,走了全表扫描,SQL性能极差。

u解决方案:

紧急固化执行计划后故障解除。

u引发的思考:

为何开发没有按照我们要求的规范来编写SQL?为何测试阶段没有发现问题?

如何再次避免这样的问题发生?

DevOps=Development+Operations+QA

人是不可靠的石器时代环境存在差异效率低下

人是不可靠的

石器时代

环境存在差异

效率低下

容易有漏网之鱼

进化

借助工具,进入铁器时代

消除人的不可靠因素

消除人的不可靠因素

消除环境的影响

消除环境的影响

提升效率大幅

不易产生遗漏

PAAudit

PAAudit

2011年

CodeXpert

2012年

DBAudit

2015年

SQLAudit

平台架构

数据库审计平台

Oracle

移交审核自助扫描

移交审核

自助扫描

月度审计

自动报告

Oracle

月度审计

月度审计

自助扫描

自助扫描自动报告

Oracle

生产审计自动报告MySQL自助扫描

生产审计

自动报告

MySQL

自助扫描

测试审核

自助扫描

MySQL

MySQL

移交审核自助扫描

SQLAudit

DBAudit

CodeXpert

为什么要对应用SQL做审计

开发人员写的SQL代码质量参差不齐,但总的来说还是偏差。

部分高压力系统因SQL代码质量问题出现生产故障。

提升开发人员的责任意识。

ITIL文档

规则集

绩效报告

绩效报告

SQLAUDIT

SQL扫描

WEB展示

审计报告

代码开发DEVPROD

代码开发

DEV

PROD

UAT

UAT

代码库

代码库

SQL捕获器 数据库解析引擎

SQL捕获器

数据库

调度器审核结果集!

调度器

审核结果集

↓基线月报规则引擎

基线月报

基线日报

SQL基线

基线分析

SQL整改

SQLAudit工具核心模块为解析引擎和规则引擎。

解析引擎用于识别并解析各类的SQL语句,输出SQL树形解析结果。

规则引擎用于SQL语句的必改项违规扫描。

SQLAuditforOracle的审计规则集如下,并设置了必改项规则(黄色高亮所示),并已将必改项报告添加到开发、测试、生产的审计过程中。

类型

分类

规则号

检查点

说明

是否

必改

执行计划扫描

索引

PLAN-DML-I001

索引全扫

执行计划里有INDEXFULLSCAN操作,每次扣0.1分。

N

PLAN-DML-I002

索引跳跃

执行计划里有INDEXSKIPSCAN操作,每次扣0.2分。

N

PLAN-DML-I003

全表扫描

对于大于200M的表全表扫描,执行计划里有TABLEACCESSFULL操作,每次扣0.5分。

Y

连接

PLAN-DML-J001

笛卡尔积

缺少连接条件,导致SQL使用笛卡尔积的方式进行连接,每句SQL扣1分。

Y

PLAN-DML-J002

嵌套连接过深

执行计划中嵌套连接深度超过6层,每句SQL扣1分。

N

绑定变量

PLAN-DML-B001

绑定变量

未使用绑定变量的SQL,每句SQL扣0.2分。

N

PLAN-DML-B002

隐式转换

在查询列上发生隐式转换(包括良性的),每次扣0.5分。

Y

SQL扫描

通用

SQLA-DML-G001

禁止使用select*

禁止使用select*,必须明确选择所需的列,每句SQL扣0.5分。

N

SQLA-DML-G002

禁止出现重复查询子句

可以使用withas替换子句来提升SQL语句执行效率,每句SQL扣0.5分。

N

SQLA-DML-G003

索引列函数

在查询索引列上发生函数调用(函数索引除外),每次扣0.5分。

N

更新

SQLA-DML-U001

update禁止出现orderby子句

防止DML过程出现不必要的排序,每句SQL扣0.5分。

N

SQLA-DML-U002

update必须出现where子句

防止DML过程出现全表锁,每句SQL扣1分。

Y

SQLA-DML-U003

禁止更新主键列值

不允许有SQL更新主键,每次SQL扣1分。

N

查询

文档评论(0)

我的文档我做主 + 关注
实名认证
文档贡献者

有偿文档使用

1亿VIP精品文档

相关文档