MySQL資料庫開發的36條軍規

Python之禪發表於2018-06-14

作者:石展
來自:https://www.slideshare.net/mysqlops/mysql-9838563


來自一線的實戰經驗,主要針對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


視訊地址:http://www.infoq.com/cn/presentations/wsz-mysql-development


PDF下載地址:回覆 “mysql” 獲取


640?wx_fmt=jpeg


相關閱讀:

相關文章