06.16 「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


分享到:


相關文章: