分享MySQL庫表設計規範、建議

一、表設計

1、表必須定義主鍵,默認爲ID,整型自增,如果不採用默認設計必須諮詢DBA進行設計評估;

2、ID字段作爲自增主鍵,禁止在非事務內作爲上下文作爲條件進行數據傳遞;

3、禁止使用外鍵;

4、多表中的相同列,必須保證列定義一致;

5、國內表默認使用InnoDB,表字符集默認使用gbk,國際默認使用utf8的表

6、表必須包含gmt_create和gmt_modified字段,即表必須包含記錄創建時間和修改時間的字段

7、單表一到兩年內數據量超過500w或數據容量超過10G考慮分表,且需要提前考慮歷史數據遷移或應用自行刪除歷史數據

8、單條記錄大小禁止超過8k(列長度(中文)*2(gbk)/3(utf8)+列長度(英文)*1)

9、日誌類數據不建議存儲在MySQL上,優先考慮Hbase或OB,如需要存儲請找DBA評估使用壓縮表存儲

二、字段設計

1、表被索引列必須定義爲not null,並設置default值

2、禁止使用float、double類型,建議使用decimal或者int替代

3、禁止使用blob、text類型保留大文本、文件、圖片,建議使用其他方式存儲(TFS/SFS),MySQL只保存指針信息

4、 禁止使用varchar類型作爲主鍵語句設計

三、語句設計

1、數據更新建議使用二級索引先查詢出主鍵,再根據主鍵進行數據更新

2、禁止使用非同類型的列進行等值查詢!

四、其他

1、禁止使用:存儲過程、觸發器、函數、視圖、事件等MySQL高級功能

2、禁止使用跨庫查詢

3、禁止使用子查詢,建議將子查詢轉換成關聯查詢

4、禁止核心業務流程SQL包含:計算操作、多表關聯、表遍歷case when等複雜查詢,建議拆分成單表簡單查詢

5、varchar長度設計需要根據業務實際需要進行長度控制,禁止預留過長空間。例如status使用varchar(128)進行存儲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章