MySQL有哪些开发规范

59次阅读
没有评论

共计 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 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1493字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)