来自:www.slideshare.net/mysqlops/mysql-9838563
来自一线的实战经验,主要针对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
|