共计 1493 个字符,预计需要花费 4 分钟才能阅读完成。
自动写代码机器人,免费开通
这期内容当中丸趣 TV 小编将会给大家带来有关 MySQL 有哪些开发规范,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
#MySQL 开发规范
## 命名规范
库名、表名、字段名必须使用小写字母,并采用下划线分割
库名、表名、字段名禁止超过 32 字字符。须见名之意
库名、表名、字段名禁止使用 Mysql 保留字
临时库、表名必须以 tmp 为前缀,并以日期为后缀
备份库、表名必须以 bak 为前缀,并以日期为后缀
create table user ...
tmp_user_20160606
bak_user_20160606
## 基础规范
使用 innodb 存储引擎
表字符集使用 utf-8
所有表必须添加注释
单表数据量控制在 5000w 以内
不在数据库中存储图片、文件等大数据
禁止在线上做数据库压力测试
## 库表设计
禁止使用分区表
拆分大字段和访问频率低的字段,分离冷热数据
用 hash 进行散表,表名后缀使用十进制数,下标从 0 开始
按日期时间分表需符合 YYYY[MM][DD][HH] 格式
采用合适的分库分表策略。例如十库百表等
## 字段设计
所有字段均定义为 not null
尽量不使用 TEXT、BLOB 类型
使用 decimal 代替 float 和 double 存储精确浮点数
使用 tinyint 代替 enum 类型
使用 unsigned 存储非负整数
使用 timestamp 存储时间
使用 int 存储时间戳
使用 int 存储 ip
禁止在数据库存储明文密码
## 索引规范
单张表索引数量不超过 5 个
单个索引中的字段数不超过 5 个
前缀索引长度不超过 8 个字符
区分度最大的字段放在前面。如:联合索引
尽量不选择字符串列
不使用外键
不使用更新频繁的列
不使用 UUID MD5 HASH
不使用 % 前导的查询,如 like %ab
不使用负向查询,如 not in/like
不在低基数列上建立索引,例如:性别
不在索引列进行数学运算和函数运算
##SQL 设计
充分利用前缀索引,例如:最左前缀
不使用 select *
不能同时用到两个范围条件
不使用存储过程、触发器、视图等
不使用大表 join
不使用数学运算和逻辑判断
不使用 order by rand()
不使用单条 sql 语句同时更新多个表
多使用 insert … on duplicate key update
多使用 replace into、insert ignore、insert into values(),(),()
多使用 update … where id in(10,20,50,…)
使用 in 代替 or, in 的值不超过 1000 个
使用 explain 诊断,避免生成临时表
使用 union all 而不是 union
###good select * from profiles where sex= M order by rating limit 10; select * from profiles inner join (select from profiles where x.sex= M order by rating limit 100000,10) as x using (); ###bad select * from profiles where sex= M order by rating limit 100000,10;
## 行为规范
禁止有 super 权限的应用程序账号存在
不在业务高峰其期批量更新、查询数据库
提交线上建表改表需求,必须详细注明所有相关 sql 语句
上述就是丸趣 TV 小编为大家分享的 MySQL 有哪些开发规范了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。
向 AI 问一下细节