背景:一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢;而在Java应用开发中数据库更是尤为重要,绝大多数情况下数据库的性能决定了程序的性能,如若前期埋下的坑越多到后期数据库就会成为整个系统的瓶颈;因此,更规范化的使用MySQL在开发中是不可或缺的。
一、MySQL数据库命名规范
1、数据库所有表前缀均使用项目名称首字母缩写;
2、数据库所有对象名称均使用小写字母,并且单词之间通过下划线分开;
3、数据库所有对象名称禁止使用MySQL保留字及关键字,涉及到关键字的SQL查询需要将关键字用单引号括起来;
4、数据库所有对象名称不超过32个字符,并且命名要遵循见名知意原则;
5、数据库临时表必须以 pro_tmp_ 为前缀并且以日期 _20190917 为后缀,备份表必须以 pro_bac_ 为前缀并以时间戳为后缀;(pro为项目名称首字母缩写)
6、数据库所有存储相同数据的列名和列类型必须保持一致。
二、MySQL数据库基本设计规范
1、若无特殊说明,建表时一律采用Innodb存储引擎。
选择合适的引擎可以提高数据库性能,如InnoDB和MyISAM,InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定;基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能;因此,其支持事务处理、支持外键、支持崩溃修复能力和并发控制是我们建表时首选的存储引擎。
2、数据库和表的字符集统一使用UTF8
数据库和表的字符集统一使用utf8,若是有字段需要存储emoji表情之类的,则将表或字段设置成utf8mb4;因为,utf8号称万国码,其无需转码、无乱码风险且节省空间,而utf8mb4又向下兼容utf8。
3、设计数据库时所有表和字段必须添加注释
使用Comment从句添加表和列的备注,或直接在数据库连接工具的注释栏添加注释,从项目开始就进行数据字典的维护。
使用Comment从句添加注释如:
1、创建表: CREATE TABLE t1(id varchar2(32) primary key,name VARCHAR2(8) NOT NULL,age number); 2、添加表注释: Comment on table t1 is '个人信息'; 3、添加字段注释: comment on column t1.id is 'id'; comment on column t1.nameis '姓名'; comment on column t1.age is '年龄';
使用数据库连接工具添加注释:
图1. 数据库连接工具添加注释
4、单个表的数据量大小控制在500万以内
尽量控制单表数据量的大小,建议控制在500万以内;500万并不是MySQL数据库的极限,但数据量太多不利于对表结构进行修改、备份和恢复数据,适当采用分库分表等手段来控制单表数据量的大小。
5、使用MySQL分区表需谨慎
分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分,但是逻辑上仍是一个表;分区表在物理上表现为多个文件,在逻辑上仍表现为同一个表,需要谨慎选择分区键;跨分区查询效率可能会更低,建议使用物理分区表等方式管理大数据。
6、尽量满足冷热数据分离,减小表等宽度