0%

实战-MySQL 数据库开发的 36 条军规!

原文地址 https://mp.weixin.qq.com/s/MPC-_vDeGk3NTdWGXLDWeA

↑ ↑ ↑点击上方 “我是程序汪” 关注我们↑ ↑ ↑

来自:www.slideshare.net/mysqlops/mysql-9838563

来自一线的实战经验,主要针对 DBA 和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和 PDF 下载。

核心军规

  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

完整版下载

PDF 详细版请在后台回复 “m36” 获取下载地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
程序汪往期精彩文章包含答案










程序汪最近整理的BAT大小厂面试题2019 (面试题目录推荐)


目录:我把精华文章都整理出来了


2019年换工作面试总结


2020年程序汪回复程序员小白11问,祝大家都能高薪


java程序员模板设计模式真的有必要掌握下,冗余代码一扫光


离职10天,面了4家公司,我的感受...


天真!这简历一看就是包装过的


终于见识到12306 的架构到底有多“牛逼”?


程序汪2019的总结,认识了很多朋友赚了些小钱,现在分享出来

给个[在看],是对程序汪最大的支持
-------------本文结束感谢您的阅读-------------
请我吃辣条吧~~ 谢谢打赏!