MySQL數據庫開發的36條鐵律

來自一線的實戰經驗,主要針對DBA和後端開發人員,總是在災難發生後,才想起容災的重要性;總是在吃過虧後,才記得曾經有人提醒過。文末是詳細的視頻講解和PD下載

核心軍規

  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

MySQL數據庫開發的36條鐵律


分享到:


相關文章: