「Mysql数据库」MySQL数据库开发的 36 条军规!

「Mysql数据库」MySQL数据库开发的 36 条军规!

 

核心军规

  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

统一使用UTF8MB4 for by 可能还有人不知道,MySQL 数据库的字符集,要用 utf8mb4,而不是utf8。由于MySQL的utf8不是真正的UTF-8,只支持最多三个字节的字符。真正的UTF-8可能会出现四个字节的字符。MySQL 历来没有修复这个 Bug,而是使用另外的解决方法:真正的UTF-8字符集用 utf8mb4的名字提供。sql

相关文章
相关标签/搜索