1)配置规范
(1)MySQL数据库默认使用InnoDB存储引擎。
(2)保证字符集设置统一,MySQL数据库相关系统、数据库、表的字符集使都用UTF8,应用程序连接、展示等可以设置字符集的地方也都统一设置为UTF8字符集。
注:UTF8格式是存储不了表情类数据,需要使用UTF8MB4,可在MySQL字符集里面设置。在8.0中已经默认为UTF8MB4,可以根据公司的业务情况进行统一或者定制化设置。
(3)MySQL数据库的事务隔离级别默认为RR(Repeatable-Read),建议初始化时统一设置为RC(Read-Committed),对于OLTP业务更适合。
(4)数据库中的表要合理规划,控制单表数据量,对于MySQL数据库来说,建议单表记录数控制在2000W以内。
(5)MySQL实例下,数据库、表数量尽可能少;数据库一般不超过50个,每个数据库下,数据表数量一般不超过500个(包括分区表)。
2)建表规范
(1)InnoDB禁止使用外键约束,可以通过程序层面保证。
(2)存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。
(3)整型定义中无需定义显示宽度,比如:使用INT,而不是INT(4)。
(4)不建议使用ENUM类型,可使用TINYINT来代替。
(5)尽可能不使用TEXT、BLOB类型,如果必须使用,建议将过大字段或是不常用的描述型较大字段拆分到其他表中;另外,禁止用数据库存储图片或文件。
(6)存储年时使用YEAR(4),不使用YEAR(2)。
(7)建议字段定义为NOT NULL。
(8)建议DBA提供SQL审核工具,建表规范性需要通过审核工具审核后
3)命名规范
(1)库、表、字段全部采用小写。
(2)库名、表名、字段名、索引名称均使用小写字母,并以“_”分割。
(3)库名、表名、字段名建议不超过12个字符。(库名、表名、字段名支持最多64个字符,但为了统一规范、易于辨识以及减少传输量,统一不超过12字符)
(4)库名、表名、字段名见名知意,不需要添加注释。