1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > mysql 什么是审核上线_自动审核及上线系统

mysql 什么是审核上线_自动审核及上线系统

时间:2018-09-24 10:37:49

相关推荐

mysql 什么是审核上线_自动审核及上线系统

自动审核:

在日常的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%的情况下,我们上线是不需要关心的,伙伴们可以做点更有意义的事情了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。