命名规范:
1.小写字母和下划线
2.禁止使用MySQL保留关键字(http://dev.mysql.co/doc/refman/5.7/en/keywords.html)
3.见名识意,不超过32个字符
4.临时表以tmp为前缀并以日期为后缀
5.备份表以bak为前缀并以日期为后缀
6.存储相同数据的列名和列数据必须一致
基本设计规范:
1.MySQL5.5之前Myisam是默认搜索引擎,现在所有表必须使用Innodb存储引擎(失误,行级锁,更好的恢复性,高并发下性能更好)
2.数据库和表的字符集统一使用UTF8(汉字占3个字节)
3.所有表和字段都需要添加注释(数据字典的维护)
3.控制单表数据量的大小(控制在500万行数据)(实际上取决于存储设置和文件系统)(历史数据归档和分库分表)
4.谨慎使用分区表(物理上为多个文件,逻辑上为一个表,谨慎选择分区键,建议物理分表)
5.冷热分离,减少表的宽度(最大4096列,每行不超过),(为了减少磁盘IO,保证热数据的内存缓存命中率)
6.禁止在表中建立预留字段(对类型进行修改,会对全表进行加锁)
7.禁止存储图片和文件等二进制数据
8.禁止在线上做数据库压力测试
9.禁止从开发环境,测试环境直连生产环境数据库
索引设计规范:
1.不要滥用索引(单张表索引不超过5个,每张表都有主键,不使用频繁更新频繁的列作为主键,不使用多列主键,不使用UUID,MD5,HASH,字符串作为主键、建议自增ID值)
2.常见的索引列建议:select、update、delete语句的where从句中的列,包含在order by 、group by、distinct中的字段,多表join的关联列
3.索引列的顺序:区分度最高的列放在联合索引的最左侧,尽量把字段长度最小的列放在联合索引的最左侧,使用最频繁的列放在联合索引的左侧
4.避免建立冗余和重复索引