壹、數據庫命令規範
所有數據庫對象名稱都必須是小寫字母,並用下劃線分隔。
所有數據庫對象名禁止使用Mysql保留關鍵字(如果表名包含關鍵字query,需要用單引號括起來)。
數據庫對象的命名要能識別名稱和含義,後面不能超過32個字符。
臨時庫表必須以tmp_為前綴,以date為後綴,備份表必須以bak_為前綴,以date(時間戳)為後綴。
所有存儲相同數據的列名和列類型必須壹致(壹般作為關聯列,如果查詢時關聯列類型不壹致,會自動隱式轉換數據類型,導致列上的索引無效,降低查詢效率)。
二、數據庫的基本設計規範
1.所有表格必須使用Innodb存儲引擎。
無特殊要求(即Innodb無法滿足的功能,如列存儲、空間數據存儲等。),所有表都必須使用Innodb存儲引擎(mysql5.5之前默認使用Myisam,Innodb)5.6之後默認使用Innodb)支持事務,支持行級鎖,在高並發下具有更好的可恢復性和更好的性能。
2.UTF8用於數據庫和表的字符集。
兼容性更好,統壹字符集可以避免字符集轉換導致的亂碼,比較前需要轉換不同字符集的話索引會失效。
3.所有的表格和字段都需要註釋。
使用comment子句向表和列添加註釋。從頭開始維護數據字典。
4.盡量控制單個表的數據量,建議控制在500萬以內。
500萬元不是MySQL數據庫的極限,太多了會在修改表結構、備份恢復等方面造成很大問題。
您可以使用歷史數據歸檔(應用於日誌數據)、子數據庫和子表(應用於業務數據)等手段來控制數據的大小。
5.慎用MySQL分區表。
分區表在物理上表示為多個文件,在邏輯上表示為壹個表。謹慎選擇分區鍵,跨分區查詢效率可能會低壹些。建議通過物理分區來管理大數據。
6.盡量將冷熱數據分開,減少表格的寬度。
MySQL限制每個表多存儲4096列,每行數據的大小不能超過65535字節以減少磁盤的IO,從而保證內存緩存中熱數據的命中率(表越寬,在將表加載到內存緩沖池時占用的內存越多,也會消耗更多的IO),更有效地利用緩存,避免將經常與冷數據壹起使用的無用列讀入壹個表中(避免更多的關聯操作)。