↑ ↑ ↑点击上方 “我是程序汪” 关注我们↑ ↑ ↑
来自一线的实战经验,主要针对 DBA 和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和 PDF 下载。
尽量不在数据库做运算
控制单表数据量 纯 INT 不超过 10M 条,含 Char 不超过 5M 条
保持表身段苗条
平衡范式和冗余
拒绝大 SQL,复杂事务,大批量任务
用好数值字段,尽量简化字段位数
把字符转化为数字
优先使用 Enum 或 Set
避免使用 Null 字段
少用并拆封 Text/Blob
不在数据库中存图片
索引类军规
谨慎合理添加索引
字符字段必须建立前缀索引?
不在索引列做运算
自增列或全局 ID 做 InnoDB 主键
尽量不用外键
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
PDF 详细版请在后台回复 “m36” 获取下载地址
1 | 程序汪往期精彩文章包含答案 |