点击蓝色“有关SQL”关注我哟

加个“星标”,天天与10000人一起快乐成长

图 | Lenis

2018年6月4日,链家 40岁程序员删库,公司斥资 18万恢复系统;

2020年2月24日,微盟程序员删库跑路,次日股价下跌 21.5亿人民币;

这些安全事故,暴露出大部分公司的隐患,缺少一个完善的数据库审核平台。数据库所有的操作,都应该有其审核规则,来确保不会造成灾难性的事情发生。

比如删库,一旦审核平台接到 Drop Database 的命令,就立马出发邮件到主管,申请批复,并暂时性停止执行,直到收到回复批准。

本文探索数据库审核平台的功能和实现。参考书目还是《数据库高效优化:架构、规范与SQL优化》

再举个例子,来说明下审核平台提供的功能。

比如,有 CRM 用户反映,平时 1,2秒就能打开的客户利润报表,现在需要 20 秒了。经过前端组的排查,确定是数据库的 SQL 返回结果慢了,请求 DBA 调优。

DBA 于是在审核平台,建了这么条规则:抓取运行时间超过 20 秒的所有 SQL 和存储过程,包括详细的 SQL 文本,索引使用和执行计划。

等待一段时间,平台就会把这些超长的 SQL 抓取出来,DBA 筛选下,就能定位到问题。

数据库审核平台的功能,到此就很清晰了,提出问题,设定规则,抓取问题SQL.


有同学会疑惑,这不就是问题排查嘛,造一个平台来解决,是不是大材小用?用短小精悍的脚本,不香嘛?

当然不是!我用 3 个节拍说服你

SQL开发的苦恼

SQL 开发小哥哥和小姐姐,平时被业务开发掏空。考勤,OA,HR,生产制造系统,ERP,进销存,仓储等 MIS 系统,通常三四条线,同时开工,占据绝大部分时间与精力。

忙起来,上午写的SQL,下午都能忘记逻辑。好不容易闲下来,除了开黑,看剧,社交,解解乏,根本没有时间再投入系统学数据库。

长期以往,遇到某张大表,SQL性能直线下降时,他们将束手无策。当靠经验,加索引,改写SQL均无效时,他们只能求助于DBA。

DBA的无奈

业务越丰富,头疼的当然不止开发,还有DBA. 成熟的企业,往往使用四,五种不同架构的数据库,十多套不同厂商的商业数据库。比如Oracle, SQL Server, DB2,MongoDB, ElasticSearch 等等。

安装,调试,建库建表建索引,建高可用集群,这些琐事,已经让 DBA 应接不暇。据我所知,传统行业还不配备专职 DBA,他们往往兼顾一些报表开发,ETL设计和建模。

于是,他们的命运,也就剩下疲于奔命,现场救火。此时与开发并无不同,没有紧急的工单,有问题的SQL调优,就被安排到了猴年马月。

上帝欲让人疯狂,先使人疯忙。

数据增值小分队

近十年,云计算不断介入后端。越来越多的机械性管理工作,被云统一筹划和部署。使得更多的精力与时间可以投入数据资产的管理,比如数据治理,数据质量和数据安全。

云之前,DBA 团队面临的情况:出了系统性能故障, DBA 的锅;出了数据库连接超时,DBA的锅;甚至数据质量问题,都是DBA的锅。但是一旦业务猛增的时候呢,嗯,各种领奖,嘉奖,都是前端业务系统的。

当 DBA 团队不能成为资产时,就会沦为成本。成本,是要被剔除的。因此,数据增值分队应运而生!

让上帝的归上帝,凯撒的归凯撒

SQL 开发会渐渐与前端框架融合,探索和保障业务系统顺利展开。DBA 分队,提供信息架构的基础建设,保障存储的安全,计算的稳定。在企业上云或数据库自治后,让大量基础 DBA 人员转型到数据增值团队来,负责数据治理,数据分析和数据安全等领域。

以上三点,就是我们需要数据库审核平台的理由了, 它帮数据团队,把服务做到量化,可视化、规模化和利润化。

数据库审核平台实践

那么,我们怎么做一个数据库审核平台呢?

购买软件,还是自研?购买的软件能帮我们解决所有的问题吗,这些数据带来的问题,有通用的模式,可以用统一模型来解决吗?

回答这个问题前,让我们先取个经,看下别人的成果。

  • 一梯队,BAT等互联网一线大厂。它们的方案,完全自研SQL引擎。实现 SQL 执行成本分析,自动审核,访问分流等。

  • 与大厂提前自动审核不同,大多数没有自研SQL引擎能力的中厂,选择半自动方式,做到事后审核。方法是收集数据库各项指标数据,引入人工判断,做好审核。

  • 针对完全没有研发能力的小厂,那么只能依靠购买商用的软件产品,再辅以人工处理。缺点就太明显,价格高,而且扩展性不高。

普通的团队怎么办呢,保二争一。自研适合大部分团队。

用 2 张图来表达,第一张是架构图,第二张是操作流程图:



平时开发中,经常遇到这些异常:

  • 上一秒运行正常的SQL,这一秒抛出了日志文件空间不足,执行失败

  • 平常运行秒出的SQL,今天偶然特别慢,就像人睡觉睡的好好的,突然抽了一两下,原因未知

  • 平静的出奇的某天下午,突然有同事大叫一声,谁XX把我的报表进程给杀了

  • 一天中的某段时间,数据库就像僵住了一样,无论运行什么都很慢

  • 系统中总有几张表,涉及到他们的查询,就非常慢

  • 每天都要手工清理一些表、索引或视图等数据库对象,没有时间和精力投入数据建模,数据治理

这些常见问题,归纳为两类:

  • 数据库对象

  • SQL 审核

也就是图中的 SQL 管理和 DB Object 管理。数据库审核平台主要做这两类。

回顾开头的原理图,数据团队要做的事情,无非就是:

  • 定义问题

  • 规则设计

  • 编码实现


如果大家有兴趣,可以参考宜信团队开源的 CreditEaseDBA Themis 数据库审核平台,在此基础上,加入自研的功能。他们的产品地址是:

https://github.com/CreditEaseDBA/Themis

再次申明,本文灵感来自《数据库高效优化:架构、规范与SQL优化》,摘录部分观点和示意图*。

--完--

往期精彩:

本号精华合集(三)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单

为什么我们需要一个 SQL 数据库审核平台相关推荐

  1. 摆脱“人肉”审核,从0搭建可视化SQL自动审核平台

    作为DBA,你们还在人工审核SQL语句吗?程序员人工审核吃力,审核标准越多,有效落实越来越困难,效率不高.随着业务量的上升,人肉式的SQL审核一直是广大DBA的烦恼.今天就同大家分享一个SQL自动审核 ...

  2. sql删除语句_推荐强大开源的数据库SQL语句审核平台,再也不用担心删除跑路了!...

    删除数据库跑路,本来是一个调侃的话语,但是前段时间在互联网圈子真的发生过,震动整个圈子,为了避免此类悲剧再次发生,现推荐一个强大的开源SQL语句管理平台,具体的功能如下: 用户模块 1.Dashboa ...

  3. docker安装Yearning MYSQL SQL语句审核平台

    主要功能 SQL查询 查询导出 查询自动补全 SQL审核 流程化工单 SQL语句检测 SQL语句执行 SQL回滚 SQL自动审核执行 历史审核记录 查询审计 推送 E-mail工单推送 自定义webh ...

  4. Archery 系统配置 SQL优化审核平台配置【详解】

    官方文档 https://archerydms.com/configuration/ 系统配置 1.goinception配置 对MySQL进行审核和执行 GO_INCEPTION_HOST:连接地址 ...

  5. 开源mysql web平台_Yearning Mysql–Web端SQL审核平台

    介绍 Yearning MYSQL 是一个SQL语句审核平台.提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易! 开源地 ...

  6. mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing

    Inception 1. Inceptionj简介 Inception是一款针对MySQL的SQL语句审核自动化运维工具.使用Inception,将会给DBA带来更大的便利性,将DBA从繁冗的工作中解 ...

  7. 使用Yearning部署一个工单化SQL语句检测平台

    * GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 引入 2. 环境准备 2.1 通过yum安装Docker 2.2 安装数据源 2.3 安装部署Yearning ...

  8. Yearning 开源SQL审核平台安装使用

    一.Yearning简介   Yearning 是MYSQL SQL语句审核平台.提供查询审计,SQL审核等多种功能. Yearning 1.x版本需inception提供SQL审核及回滚功能. Ye ...

  9. apexsql使用方法_使用ApexSQL审核执行SQL Server审核

    apexsql使用方法 This is the last article, but not least, in the SQL Server Audit series. In this series ...

最新文章

  1. 借助阿里云数加,小小的美甲行业被美甲帮玩出了天价。
  2. 使用Epoll 能监听普通文件吗?
  3. 报名 | 2019清华大数据系统软件峰会
  4. python列表切片图解_Python列表切片操作实例总结
  5. gitlab重置root密码
  6. 技术实践丨手把手教你使用MQTT方式对接华为IoT平台
  7. 在 vCenter Server 中触发了 vSphere Distributed Switch 绑定警报 (2057667)
  8. 在VMware中的Ubuntu虚拟机安装open-vm-tools调整屏幕可以复制粘贴
  9. android按任意建关闭对话框,Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...
  10. OAuth1.0a的使用例(RFC5849 1.2节的中文翻译)
  11. 我写的这些opensource项目
  12. Redis下载安装-Windows版本
  13. iPhone 屏幕适配尺寸整理
  14. 单位根检验urdf_怎样分析单位根检验结果
  15. survival cutoff值
  16. 在探索中感悟,在摸索中前进--ET之快递法
  17. python中线条颜色_python – 在pandas中指定线条颜色
  18. 星期几—YYYY-MM-DD,表示一个日期,你知道是星期几吗?
  19. 冒泡排序和纯指针的冒泡排序
  20. 共享汽车充电桩方案开发详解

热门文章

  1. 《学习记录》“Python”输入月份,输出天数
  2. 全景效果实现(Photo Sphere,photo-sphere-viewer全景虚拟漫游)
  3. Hadoop下载安装(ubantu20.04)
  4. C51单片机-共阳极数码管循环显示数字0至9,共阴极数码管循环显示5201314(动态)
  5. php怎么弄钓鱼,如何使用PHP和JS实现模仿登录钓鱼
  6. 古溪镇为民工作室 ‖“让青春飞扬”成长小组之“校园欺凌和暴力预防”
  7. 怎么把apk文件安装到android模拟器上
  8. mybatis级联查询(主子查询)
  9. mysql实现文章上一篇下一篇的sql语句
  10. [爬虫]python爬取B站日榜100名up主及其视频信息