「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

相關文章
相關標籤/搜索