1、SQL审核如何实践DevOps周文雅 爱可生研发负责人负责产品线数据库运维管理平台数据库自服务平台开源产品 DTLE 和 SQLEDevOps 与 SQL 审核如何实践DevOps体系和价值实践中面临挑战总结DevOps&SQL 审核DevOps&SQL 审核自动化开发&运维稳定性&可靠性发布上线上线前(事前)SQL全生命周期质量管理存在的问题:发布不规范,事前无控制,事后少跟踪SQL上线流程需求创建代码开发持续集成创建镜像测试环境部署测试UAT环境部署测试生产部署上线生产运行存在问题:好SQL存在部门分歧。实时验证SQL质量,审核时间长耽误项目进度。开发后整改没有动力存在问题:审核如何与CI
2、/CD持续集成流程对接。存在问题:关注功能和业务数据库,无法发现低效问题SQL存在问题:关注功能和业务数据库,无法发现低效问题SQL关注性能不关注SQL质量存在问题:审核上线工作量大,常常加班 审核优化需要高级DBA,人力成本大 审核建议改进困难 大表DDL引起性能问题如何减少对业务影响 开发线下找DBA上线,无法管控存在问题:线上性能问题排查周期长,SQL问题占比大,疲于救火AP业务影响TP业务性能开发/测试人员运维人员管理人员上线后(事后)SQL审核如何实践DevOps体系和价值SQL审核适配DevOps体系和价值持续集成持续交付监控与反馈自动化SQL全生命周期要解决的问题:建立规范、标准
3、发布、前控后督自动化审核平台+专家服务经验,闭环渐进式提升SQL质量9规范标准化,建SQL规范审核流程化,自动化,审核效率高,落地推进快质量可跟踪,随着业务发展渐进式提升SQL质量,提升效果可量化建立规范SQLE集成专家经验,SQL规范标准化,看得见,解决事前审核规范不标准难题上线前控制SQLE赋能开发,在代码开发阶段检查SQL质量,SQLE在智能审核,对测试、预发布等环境SQL进行审核优化上线后监督SQLE智能审核功能,生产环境进行SQL审核优化标准发布SQLE与企业内部上线流程对接,变更上线标准化,可追踪手动上线/自动上线/项目上线建立规范集成专家经验,构建SQL规范标准用户经验专家经验信
4、通院SQL质量管理平台能力分级要求SQL标准规范300+专家经验沉淀规范标准客户经验总结专家经验沉淀参与信通院SQL质量管理标准编制规则库覆盖广DDL规范、DML规范使用建议、全局配置命名规范、索引设计规则灵活调整规则参数灵活调整,满足个性业务需求规则数量可按需定制增加,满足个性化需求SQLE规则库TIPS:业务规则不要太多20-30条有效规则可以解决业务90%以上的SQL问题1、保证脚本原子性,确保多个脚本按照序号通过顺序执行即可完成2、sql文件命名规则系统自动生成,数据库名_DDL(DML)_日期_序号(01,02.).sql(定制标准)3、上线SQL分为DDL和DML两类,必须使用单独
5、的文件提交,不得混淆4、每个数据库需要单独提交SQL脚本5、单条SQL语句必须使用;作为结束6、表名、列名、索引名的长度不大于64个字节。7、MySQL建议使用Innodb引擎,使用utf8mb4字符集。8、新建表必须加入if not exists create,保证脚本重复执行不报错9、禁止所有的drop操作(drop索引除外),如确实需要drop,请使用rename代替,一段时间后由DBA手工清理10、表必须有主键,建议使用自增,且为bigint无符号类型,即bigint unsigned。11、varchar(max)原则不允许使用12、原则上不建议建立外键13、char长度大于20时,
6、必须使用varchar类型14、新建数据库对象时不得使用数据库的关键字15、一个表建议索引数量不建议超过5个,复合索引的列数量不建议超过5个16、如果语句块中存在多条对同一个表的修改语句,则建议合并成一个ALTER语句17、禁止将blob类型的列加入索引18、禁止使用没有where条件的SQL语句或者使用where 1=1等变相没有条件的SQL某大型银行落地SQL规范标准TIPS:规则要适配业务建立规范适配业务审核流程DevOps体系和价值持续集成持续交付监控与反馈自动化编码环节IDE集成集成环节CI/CD 集成,自动发现问题阻断问题自动发现SQL中存在问题,自动阻断,不允许这些不符合标准的代