数据库命名规范
1.所有数据库对象名称必须使用小写字母并用下划线分隔
2.所有数据库对象名称禁止使用mysql保留关键字
3.数据库对象的命名要能做到见名知意,并且最好不要超过32个字符
4.临时库必须以temp为前缀并以日志为后缀
5.备份库,备份表必须以bak为前缀并以日期为后缀
6.所有存储相同数据的列名和列类型必须一致
数据库基本设计规范
1.所有表必须使用Innodb存储引擎(5.6以后的默认引擎,支持行级锁)
2.数据库和表的字符集统一(使用UTF-8)(UTF8汉字为3个字节ASCll码占用1个字节)
3.所有表和字段都需要添加注释
4.尽量控制单表数据量大小,建议控制在500万以内
5.谨慎使用Mysql分区表
6.尽量做到冷热数据分离,减小表的宽度
7.禁止在表中建立预留字段
8.禁止在数据库中存储图片,文件二进制数据
9.禁止在线上做数据库压力测试
10.禁止从开发环境,测试环境,直接连接生产环境数据库
数据库索引设计规范
1.限制每张表的索引数量,建议单张表索引不超过5个
2.每个Innodb表必须要一个主键
3.添加索引的列一般会出现在WHERE、ORDER BY 、GROUPBY、DISTINCT、JOIN关联列中的字段
4.索引列顺序(区分度最高的列凡在联合索引最左侧,尽量把字段长度小的列放在联合索引的最左侧,使用最频繁的列放在联合索引的左侧)
5.避免简历冗余索引和重复索引
6.对于频繁的查询优先考虑使用覆盖索引
7.避免使用外键(不建议使用外键,使用索引)
数据库字段设计规范
1.优先选择符合存储需要的最小的数据类型
2.避免使用Text、BOLB、Enum数据类型
3.尽可能把所有列定义为NOT NULL
4.使用Timestamp或datetime类型存储时间
5.同财务相关的金额类,必须使用decimal类型
数据库SQL开发规范
1.建议使用预编译语句进行数据库操作
2.避免数据类型的隐式转换
3.充分利用表上已经存在的索引
4.程序连接不同的数据库使用不同的账号,禁止跨库查询
5.禁止使用SELECT * 必须使用SELECT <字段列表> 查询
6.禁止使用不含字段列表的INSERT语句
7.避免使用子查询,可以把子查询优化为join
8.避免使用JOIN关联太多的表(建议不超过5个)
9.减少同数据库的交互次数
10.使用in代替or
11禁止使用order by rand()进行随机排序
12.WHERE从句中禁止对列进行函数转换和计算
13.在明显不会有重复时使用UNION ALL 而不是UNION
14.拆分复杂的大SQL为多个小SQL
数据库操作行为规范
1.超过100万行的批量写操作,要分批次多次进行操作。
2.对大表使用pt-online-schema-change修改表结构。
3.禁止为程序使用的账号赋予super权限。
4.对于程序连接数据库账号,遵循权限最小原则。