一、基础规范
- 用InnoDB存储引擎
支持事务、行级锁、并发性好、CPU和内存缓存页优化利用率高 - 禁止使用存储过程、视图、触发器、事件
优秀框架是“解放数据库CPU,将计算移到服务层”,若并发大,这些功能很可能将数据库拖死。在业务层,可通过加机器就加性能 - 禁止存大文件
不灵活、浪费资源、格式转换故效率低
二、命名规范
- 库名、表名、字段名:小写、下划线,不超32字符,见名如意,禁止拼音英文混用
- 表名t_xx,唯一索引uniq_xx,非唯一索引inx_xx
三、表设计规范
- 表列数小于30
- 必须有主键:
1、字符串不应该做主键
2、若没指定主键,innoDB会用唯一非空字段代替 - 禁止用外键,若需要在业务层控制
外键导致表表之间耦合,update、delete都会涉及相关表,影响性能,甚至死锁。
四、字段设计规范
- 字段设置not null,且提供默认值
1、null列使得索引、值比较更复杂,优化难
2、null使得表有空字段,数据处理性能降低
3、mysql对null特殊处理,需要额外空间标识
4、null操作有限制, 不能=、in、<、<>、!=等,只能is null 或 is not null - 尽量不用text、blob类型:浪费内存和磁盘,影响性能
- 避免使用小数存储货币,因为容易数据对不上,要用整型。
- 可能模糊查询的用varchar存错,如手机号,like “136%”
- 禁止使用ENUM,用tinyint代替
1、enum要做DLL操作
2、enum实际也是整型