天天看點

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
上一篇: 工廠模式

繼續閱讀