MySQL规范
一、MySQL数据库命名规范
-
数据库所有表前缀均使用项目名称首字母缩写;
-
数据库所有对象名称均使用小写字母,并且单词之间通过下划线分开;
-
数据库临时表必须以 pro_tmp_ 为前缀并且以日期 _20190917 为后缀,备份表必须以 pro_bac_ 为前缀并以时间戳为后缀;(pro为项目名称首字母缩写);
-
数据库所有存储相同数据的列名和列类型必须保持一致。
二、MySQL数据库基本设计规范
-
若无特殊说明,建表时一律采用Innodb存储引擎;
选择合适的引擎可以提高数据库性能,如InnoDB和MyISAM,InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定;基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能;因此,其支持事务处理、支持外键、支持崩溃修复能力和并发控制是我们建表时首选的存储引擎。
-
数据库和表的字符集统一使用UTF8;
数据库和表的字符集统一使用utf8,若是有字段需要存储emoji表情之类的,则将表或字段设置成utf8mb4;因为,utf8号称万国码,其无需转码、无乱码风险且节省空间,而utf8mb4又向下兼容utf8。
-
设计数据库时所有表和字段必须添加注释;
-
单个表的数据量大小控制在500万以内;
-
使用MySQL分区表需谨慎;
-
尽量满足冷热数据分离,减小表等宽度;
-
建立预留字段需谨慎;
-
数据库中禁止存储图片、文件等大的二进制数据。
三、MySQL数据库字段设计规范
-
优先选择符合存储需要的最小的数据类型;
-
避免使用TEXT、BLOB数据类型;
-
避免使用ENUM枚举类型;
-
使用TIMESTAMP(4字节)或DATETIME(8字节)类型存储时间;
-
财务相关的金额类数据必须使用decimal 类型。
四、MySQL索引设计规范
-
每张表的索引数量不超过5个;
-
每个Innodb 表必须有一个主键;
-
尽量避免使用外键约束。
五、MySQL数据库SQL开发规范
-
在明显不会有重复值时使用UNION ALL 而不是UNION;
1)UNION 会把两个结果集的所有数据放到临时表中后再进行去重操作;
2)UNION ALL 不会再对结果集进行去重操作;
-
把复杂、较长的SQL 拆分为为多个小SQL 执行。