视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL"军规"
2020-11-09 08:43:07 责编:小采
文档


下面我来说一下,有关在MYSQL上最实用的"军规",希望大家都能够牢记遵守

一、核心军规

- 不在数据库做运算:cpu计算务必移至业务层

- 控制单表数据量:单表记录控制在1000w

- 控制列数量:字段数控制在20以内

- 平衡范式与冗余:为提高效率牺牲范式设计,冗余数据

- 拒绝3B:拒绝大sql,大事物,大批量

二、字段类军规

- 用好数值类型
tinyint(1Byte)
smallint(2Byte)
mediumint(3Byte)
int(4Byte)
bigint(8Byte)
bad case:int(1)/int(11)

- 字符转化为数字
用int而不是char(15)存储ip

- 避免使用NULL字段
NULL字段很难查询优化
NULL字段的索引需要额外空间
NULL字段的复合索引无效

- 少用text/blob
varchar的性能会比text高很多
实在避免不了blob,请拆表

- 不在数据库里存图片

三、索引类军规

- 谨慎合理使用索引
改善查询、减慢更新
索引一定不是越多越好(能不加就不加,要加的一定得加)
覆盖记录条数过多不适合建索引,例如“性别”

- 字符字段必须建前缀索引

- 不在索引做列运算
bad case:
select id where age +1 = 10;

- innodb主键推荐使用自增列
主键建立聚簇索引
主键不应该被修改
字符串不应该做主键
如果不指定主键,innodb会使用唯一且非空值索引代替

- 不用外键
请由程序保证约束

四、sql类军规

- sql语句尽可能简单
一条sql只能在一个cpu运算
大语句拆小语句,减少锁时间
一条大sql可以堵死整个库

- 简单的事务
事务时间尽可能短
bad case:
上传图片事务

- 避免使用trig/func
触发器、函数不用
客户端程序取而代之

上面是我整理给大家的MySQL"军规",希望今后会对大家有帮助。

相关文章:

mysql基本语法

给Myql创建索引

mysql的一些高级用法

下载本文
显示全文
专题