自动审核:

在日常的DBA工作中,表结构的审核并上线,表结构的修改审核并上线,占据了工作的很大时间,尤其是在产品快速迭代、快速试错阶段,这样,DBA同学们就会陷入所谓的审核SQL的无限制的机械运动中《新建表、改表》。

所谓审核,我个人认为就是一系列的条件规则,然后像套公式似的,把SQL往里套,鉴于此,我们自己就设计了一套自动审核系统,极大的加快审核流程。当然了,很多细小的规则随着数据库版本、线上硬件环境也会有一些改变,审核的准确性也会受到一些影响,但是如果审核系统能帮我们搞定一些初级的小问题,我就心满意足了。

在做系统之前,根据经验就制定了一些规则:如下,当然不是所有的都跟性能有直接关系,有的只是为了追求美观、追求极致而设定。

1、表结构是否合法

//不合法当然不能通过

2、表名、列名长度超过 16

//主要跟我们自己的授权有关系

3、必须有 unsigned

//业务最容易忘记添加,当然如果一定要负值,那么就走人工审核;

4、必须为 InnoDB

//当然了,我已经忘记还有MyISAM了,统计系统除外

5、int bigint(10) 不能小于 10

//大家见过int(1)的情况么?

6、varchar 长度小于 3000  //

这也算是一个人为规定,没有任何意义

7、text 字段个数不能大于 3

//人为规定而已

8、主键必须为 int 类型  //不int,真的会死人

9、索引不能有重复  //见过key(id),key(id,uid)的情况吗?

10、索引个数不能大于 5 个(包括主键)

//人为定义而已

11、索引字段必须为 not null,并且有 default

//参照高性能那本书说的,其实不一定影响性能

12、SQL 是否使用到索引  //不能用到索引的SQL,真的很惨

13、SQL 中不能有 *  //由于*

经常导致流量、O巨大,所以,也强制了

14、自增字段必须为 int 或者 bigint

//见过自增用smallint的吗?然后一下就溢出了

15、请不要使用非 MySQL 保留字(Reserved Words)

//写脚本,大家讨厌符号么?

规则设计好了,那么就是嵌入我们的Hulk平台了,在用户平台,业务根据业务标记,提供Create

SQL、Alter

SQL已经线上运行的SELECT,提交后,会直接调用后端审核程序,程序根据以上规则,进行审核,如果审核不通过,那会直接退回业务人员,并给出除了哪个规则,业务人员根据反馈修改,在SQL为通过审核前,DBA是完全不用参与,也根本不知道业务提过需求,这样,就极大的降低了DBA的工作量。

这个系统有一些挑战:

1、因为MySQL的SQL语法非常非常的多,尤其是Alter

SQL,无法兼容所有的SQL,例如:多个add column、create

index与add

index、modify与change等;如果处理不好,会造成业务人员的极大困惑,本来没有问题的,但是自动审核就是不通过;

2、业务会把insert语句也传到Hulk平台审核、或者符号的控制

,更有甚至,传的SQL就是错误的,还有库名、表名不正确,或者添加一个本已经有的字段,根本就防不慎防;

3、在每行结果的注释#,控制起来也麻烦;

自动上线:

自动审核完毕,当然我们就需要上线了,这里,我们也期望不要通过人为的去登录MySQL,建表、改表,造成大量的无价值的机械运动。

建表上线:这个比较简单,审核通过,我们只需要根据业务标记,让Hulk调用上线程序直接在数据库中执行SQL即可;

改表上线:这个能直接上线吗?当然,在极大部分情况下,我们是直接上线的,规则一些规则:

1、表小于10w行,小于10M空间大小,那么直接执行SQL;

2、如果不满足1,并且满足percona

online-schema-change条件,那么通过osc工具,进行在线修改;(最大干过60G的表,当然搞了很长时间)

3、如果1、2都不行,走人工上线流程;

在99%的情况下,我们上线是不需要关心的,伙伴们可以做点更有意义的事情了。

mysql 什么是审核上线_自动审核及上线系统相关推荐

  1. 两个变量相乘_自动控制原理-信号流图与系统状态变量传递函数之间联系如此紧密...

    自动控制原理-信号流图与系统状态变量传递函数之间联系如此紧密 实例分析: 带有正反馈,负反馈,信号线交叉的结构图简化: 比较点ab之间是一个并联方框连接,引出点1夹在两个比较点a,b之间,G1G2无法 ...

  2. python自动售货机_自动售货机支付系统详解

    自动售货机从机械自动售货机发展到今天已经有智能自动售货机了.机械式自动售货机功能性很差,能售卖的产品也有限.一般被用于饮料的售卖.而智能自动售货机可以连接物联网和互联网.支持移动支付,可以售卖几乎任意 ...

  3. mysql 表上线_腾讯云上线数据库 MySQL 8.0 版

    原标题:腾讯云上线数据库 MySQL 8.0 版 北京商报讯(记者 魏蔚)7月8日,腾讯云正式发布数据库MySQL 8.0版,通过优化锁系统,事务系统等模块,进一步提升性能,使得QPS(每秒查询率)超 ...

  4. mysql访问跨网御_网御网络审计系统(数据库审计型)

    完善的数据库审计 网御网络审计系统(数据库审计型)全面支持对各种常见商业数据库.开源数据库及国产 数据库系统的审计,例如 Oracle.DB2.Sybase.Informix.SQL Server.T ...

  5. MySQL表对账设计_从零开始设计对账系统

    前言 对账系统作为支付系统中的基石系统,处于整个支付环节中的最后一层,主要用来保证我方支付数据与第三方支付渠道或银行的数据一致性. 在没有对账系统之前,财务在第二日手工核对前一日的应收与实收.倘若不一 ...

  6. 贝聊SQL自动审核系统

    文章作者:刘汉华,贝聊高级运维工程师 下面是我的第一次需求分析及原型设计作品,这里整理了一下跟有需要的朋友们分享! 一. 需求背景 1.1 需求要解决什么问题 针对MySQL语句写法的统一化标准,人工 ...

  7. 用友U8调拨单、组装拆卸单、盘点单审核后自动审核对应的其他出入库单

    用友U8+中,调拨单.组装拆卸单.盘点单审核后,自动审核对应的其他出入库单. 解决方法 针对账套库执行,查询语句: select * from AccInformation  where cSysID ...

  8. 【U8】调拨单审核后自动审核对应的其他出入库单

    需求描述: U8V13.0,客户希望调拨单审核后,自动审核对应的其他出入库单. 解决办法: 打库存管理(ST)补丁,并执行以脚本:(该脚本对于自动审核组装拆卸单.盘点单生成的其他出入库单同样有效.) ...

  9. 【U8+】用友U8+自动审核自动生成的其他出入库单据

    [问题需求] 用友U8+中,客户希望调拨单.组装拆卸单.盘点单审核后,自动审核对应的其他出入库单. [解决方法] 针对账套库执行,查询语句: select * from AccInformation ...

  10. sql自动审核工具-inception

    [inception使用规范及说明文档](http://mysql-inception.github.io/inception-document/usage/) [代码仓库](https://gith ...

最新文章

  1. 拷贝的Android源码不能单独编译mmm命令提示找不到
  2. MySQL管理一些基础SQL语句
  3. 交换机的一些常见网络命令
  4. Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍
  5. Ajax 模糊查询的简单实现
  6. 云效Codeup代码评审中的代码协同
  7. java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11
  8. Spring配置跨域请求
  9. laravel5.1 基于redis实现任务队列
  10. 组态软件专用短信终端
  11. 关于脏读,不可重复读,幻读的理解
  12. 等保三级全称是什么?是什么意思?
  13. c语言 gets getc,6.16 C语言,getchar gets getc有什么区别 分别是表示什么的
  14. 微信公众号推广分享二维码,关联扫码关注的客户
  15. 智慧消防三维地理信息应急指挥平台
  16. Python 中的 sequence 类型
  17. 为什么一般的眼科医院很难发现眼底疾病?这个是关键!
  18. K8S中的亲和,污点和容忍
  19. 解决使用yum安装软件时出现GPG-Key的问题
  20. 主控AU6989SN-GTC/AU6998SN [F500] - F/W FD04,爱国者U盘被写保护怎么办?

热门文章

  1. Interesting Finds: 2008.04.18
  2. 教程 | 如何使用Docker、TensorFlow目标检测API和OpenCV实现实时目标检测和视频处理
  3. Linux网站搭建(1)---Apache2安装配置
  4. 计算机图形学与混合现实研讨会GAMES: Graphics And Mixed Environment Seminar
  5. Atitit 信息安全体系 资料书籍表 1. 《信息安全原理与技术 2 1.1. 第2章 工具箱: 鉴别、 访问控制与加密 2 1.2. 第3章 程序和编程 漏洞 木马 病毒 3 1.3. We
  6. Atitit 依赖管理之道 1. 概念 依赖管理,是指在什么地方以什么形式引入外部代码。 1 1.1.1. 理解模块化和依赖管理: 1 1.2. 依赖管理,有三个层面。 单一职责原则,协议对象引用,
  7. Atitit 图像指纹识别匹配sift算法 atlks总结
  8. Atitit.计算机图形图像图片处理原理与概论attilax总结
  9. paip.索引的种类以及实现attilax 总结
  10. paip.chrome使用ACTIVX 的总结