1.一台机器只安装一套mysql,同一mysql的库、表字符集必须一致,字段禁止定义字符集,新上线业务优选UTF8
2.开发人员申请新用户遵循如下规则:
网站应用(web_业务简称)
报表应用(report_业务简称)
服务应用(deamon_业务简称)
查询服务(search_业务简称)
3.线上环境只授予开发人员两种权限的用户, 拥有select,insert,update,delete 权限的用户和只拥有select权限的用户
授权形式只有如下两种:
grant select,insert,update,delete on dbname.* to 'username'@'ip' identified by 'userpassword';
grant select on dbname.* to 'username'@'ip' identified by 'userpassword';
dbname,username,ip, userpassword 开发人员按如下格式提供:
业务DB使用描述: | 描述DB使用场景,用于什么业务 |
数据库服务器ip: | 填写需添加用户的数据库ip(只提供主机IP即可) |
来源ip: | 填写需要从哪台服务器连接 |
账户名称: | 参考账户规则添加 |
数据库: | 需要给哪个库开通权限 |
权限: | 只能选择select,insert,update,delete |
备注: | 如果有其它说明 |
4.数据库命名组成: 页游[手游]平台标识_业务简称
5.除存放日志的表和中间临时表外,其他表原则上必须有主键
6.创建表必须包含行记录的创建时间字段和修改时间字段
7.默认表的engine应该为innodb,其他engine需与DBA运维评估
8.表和字段必须有comment注释,表名使用小写字母和下划线命名,字段名统一大写
9.组合索引不能超过5列,最好保持在3列以内
10.组合索引最常使用的字段或区分度高的字段考虑放在索引第一列
11.单表索引数量建议不超过5个
12.除数据分析系统可以使用存储过程外,其它在线系统不允许使用触发器、存储过程、自定义函数(UDF)、视图,且不允许在数据库中进行大量计算
13.应用程序尤其web层直连DB的程序,须设计防sql注入校验
14.连接DB的程序需实现读写分离设计,以便于扩展读负载
15.在线业务单表数据量不建议超过500W,大业务量库表需使用分库分表设计及进行历史数据的迁移
16.不建议使用分区表,尽量使用分表设计来替代
17.避免使用select *,*号换为具体字段名,insert语句必须写明具体字段
备注:2和4项沿用之前规定,以避免用户和数据库创建风格不一致。