来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和PD下载
一、核心军规
1.尽量不在数据库做运算
2.控制单表数据量 纯INT不超过10M条,含Char不超过5M条
3.保持表身段苗条
4.平衡范式和冗余
5.拒绝大SQL,复杂事务,大批量任务
二、字段类军规
1.用好数值字段,尽量简化字段位数
2.把字符转化为数字
3.优先使用Enum或Set
4.避免使用Null字段
5.少用并拆封Text/Blob
6.不在数据库中存图片
三、索引类军规
1.谨慎合理添加索引
2.字符字段必须建立前缀索引?
3.不在索引列做运算
4.自增列或全局ID做InnoDB主键
5.尽量不用外键
四、SQL类军规
1.SQL尽可能简单
2.保持事务连接短小
3.尽可能避免使用SP/Trigger/Function
4.尽量不用Select *
5.改写Or为IN()
6.改写Or为Union
7.避免负向查询和%前缀模糊查询
8.Count不要使用在可Null的字段上面
9.减少Count(*)
10.Limit高效分页,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
11.使用Union ALL 而不用Union
12.分解链接,保证高并发
13.Group By 去除排序
14.同数据类型的列值比较
15.Load Data导入数据,比Insert快20倍
16.打散大批量更新,尽量凌晨操作
五、约定类军规
1.隔离线上线下
2.禁止未经DBA认证的子查询
3.永远不在程序段显式加锁
4.表字符集统一使用UTF8MB4