標籤:電商
一 資料庫設計規範
1 命名規範
所有資料庫物件名稱必須用小寫字母並底線分割
對象名稱禁止使用MySQL保留關鍵字
命名要做到見名識義,不超過32位元組
暫存資料表必須tmp首碼 日期尾碼
備份庫表bak首碼 日期尾碼
所有儲存相同資料的列名和類型必須一致
2 資料庫基本設計規範
所有表必須用innodb引擎
資料庫和表字元集同意使用utf8(全儲存中文的可以使用gbk 或是gbk2312)
所有表和欄位都使用comment加註釋
從一開始就進行資料字典的維護
盡量控制單表資料量的大小 建議500萬以內
謹慎使用MySQL分區表
盡量做到冷熱資料分離 減小表的寬度
禁止在表中建立預留欄位
禁止在資料庫中儲存圖片 檔案等位元據
禁止線上上做資料庫的壓力測試
禁止從開發環境 測試環境串連生產環境的資料庫
3索引設計規範
限制每張表索引數量,建議單張表索引不超過5個
每個innodb表必須有一個主鍵,不適用頻繁更新的列為主鍵 不適用多留主鍵
常見索引留建議: 在select update delete語句中where從句中的列
包含在order by 、group by distinct中的欄位
多表串連的關聯列
如何選擇索引列的順序:
區分度最高的列放在聯合索引的最左側(盡量選主鍵)
欄位小的列放在聯合索引的最左側
使用最頻繁的列放在聯合索引的左側
不建議使用外鍵約束,但是一定在表與表之間的關聯鍵上建立索引
4 資料庫欄位設計規範
有限選擇符合儲存需要的最小的資料類型,
比如講字串轉化的數字類型儲存
對於非負數資料採用無符號整形進行儲存( unsigned int)
避免使用text blob enum類型
盡量把列定義為not null
使用大datetime 或timestamp類型儲存時間
同財務相關的金額類資料 必須使用decimal類型
5 資料庫sql開發規範
建議使用先行編譯語句進行資料庫操作
避免使用雙%的查詢條件 如like %w%
應該對以後的擴充進行考慮
程式串連
禁止使用select *
避免使用子查詢 可轉化為join操作
避免使用join關聯太多的表 建議不少過5個
減少同資料庫的互動次數
明顯不會有重複值是使用union all代替union
拆分複雜的大sql為多個小sql
6 資料庫操作行為規範
超100萬行的批量些操作 要分批多次進行操作
對大表使用pt-online-schema-change修改表結構
禁止為程式使用的帳號賦予super許可權,遵循許可權最小原則,不準有drop許可權
高效能可擴充MySQL資料庫設計及架構最佳化 電商項目_1