首页 > 代码库 > mysql数据库开发规范

mysql数据库开发规范

对规范的遵守可用二八原则,不要教条。为满足实际需求 可忽视部分规范。

1.索引规范    *目标     |--利用最小的索引成本找到需要的行记录        *原则     |--做前缀匹配     |--选择区分度高的列做前缀索引列     |--尽量使用重复索引 与where条件匹配     |--避免重复索引     |--索引列尽量包含 group by、order by所涉及的列     `--查询结果比较大时 考虑索引覆盖2.SQL规范    *原则    |--避免大事务 减少等待和竞争    |--不要使用* 使用具体列名    |--遇到分页查询 使用延迟关联解决(如果有打offset,可先选取ID,然后用主键id关联)    |--避免多表查询 避免join    |--IN元素禁止超过300个    |--避免%前缀做模糊查询,不走索引    |--不要一次更新大量数据(>30000)    |--尽量使用union或in 代替or    |--避免使用子查询 尽量使用join    `--不使用负向查询 not in/like  使用in 反向代替3.DDl规范    *前提    |--DDL会锁表,评估锁表给业务系统带来的影响    *原则    |--所有变更提前一天提交    |--日常变更工作日下班后,重大变更时间沟通后确定    |--所有DDL变更 需和研发沟通 审核后再提交    `--所有新上线的表必须确定索引后才可上线4.表的设计规范    *原则    |--使用innodb存储引擎,表的结尾必须是Engine=innodb Auto_increment=1 Default Charset=uft8mb4    |--表必须带有物理主键     |    |--id int(10) unsigned primary key not null auto_increment    |    |--id bigint(19) unsigned primary key not null auto_increment    |    |--int(M) M 表示最大显示宽度,和数字位数也无关系。int(3),int(8) 在磁盘上都是占用 4 btyes 的存储空间    |    `--预估数据会无限增加的表,主键一律所以用Bigint(19) unsigned    |--禁止使用字符做主键    |--禁用联合主键    |--不在数据库中存储图片 文件等大数据    `--禁止使用分区表,定期创建分区表会给系统运维造成隐患5.列设计规范    *原则    |--尽量减少存储空间    |--尽量使用数值类型+unsigned    |--禁用blob/text字段    |--禁用NULL值,建议在定义时都加上默认值    |    |--NULL字段很难查询优化    |    |--NULL字段的复合索引无效    |    `--NULL字段的索引需要额外空间    |--禁止使用外键    |--使用unsigned存储非负数    `--varchar(N) N表示的是字符数不是字节数。        |--Mysql中一个表中所有varchar字段最大长度和是65535个字节        `--进行排序和创建临时表时,会使用N的长度申请内存6.命名规范    *规范    |--库/表/列/索引名称一律小写    |--命名不要超过32个字符    |--索引    |    |--格式为idx_列名缩写    |    `--唯一索引 uniq_列名缩写    `--做到见名知意

 

mysql数据库开发规范