MySQL数据库开发的36条铁律
来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和PD下载
核心军规
- 尽量不在数据库做运算
- 控制单表数据量 纯INT不超过10M条,含Char不超过5M条
- 保持表身段苗条
- 平衡范式和冗余
- 拒绝大SQL,复杂事务,大批量任务
字段类军规
- 用好数值字段,尽量简化字段位数
- 把字符转化为数字
- 优先使用Enum或Set
- 避免使用Null字段
- 少用并拆封Text/Blob
- 不在数据库中存图片
索引类军规
- 谨慎合理添加索引
- 字符字段必须建立前缀索引?
- 不在索引列做运算
- 自增列或全局ID做InnoDB主键
- 尽量不用外键
SQL类军规
- SQL尽可能简单
- 保持事务连接短小
- 尽可能避免使用SP/Trigger/Function
- 尽量不用Select *
- 改写Or为IN()
- 改写Or为Union
- 避免负向查询和%前缀模糊查询
- Count不要使用在可Null的字段上面
- 减少Count(*)
- Limit高效分页,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
- 使用Union ALL 而不用Union
- 分解链接,保证高并发
- Group By 去除排序
- 同数据类型的列值比较
- Load Data导入数据,比Insert快20倍
- 打散大批量更新,尽量凌晨操作
约定类军规
- 隔离线上线下
- 禁止未经DBA认证的子查询
- 永远不在程序段显式加锁
- 表字符集统一使用UTF8MB4
相关推荐
emmm00 2020-11-17
世樹 2020-11-11
tufeiax 2020-09-03
疯狂老司机 2020-09-08
sunnyxuebuhui 2020-09-07
xkorey 2020-09-14
CoderToy 2020-11-16
技术之博大精深 2020-10-16
bianruifeng 2020-11-16
云中舞步 2020-11-12
暗夜之城 2020-11-11
张荣珍 2020-11-12
amienshxq 2020-11-14
ASoc 2020-11-14
yungpheng 2020-10-19
loveyouluobin 2020-09-29
尘封飞扬 2020-09-29
Coder技术文摘 2020-09-29