MySQL数据库开发的36条军规

来自一线的实战经验,主要针对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
原文地址:https://www.cnblogs.com/emaes/p/12653964.html