mysql 高性能優化規範建議

一、數據庫命名規範

1.所有數據庫對象名稱必須使用小寫字母,並且以下劃線分割。

2.所有的數據庫對象名稱禁止使用MySQL保留關鍵字(如果表名中包含關鍵字查詢時,需要加單引號)。

3.數據庫對象的命名要做到見名識意,並且最好不超過32個字符。

4.臨時庫表必須以tmp_爲前綴,並以日期爲後綴。備份表必須以bak_爲前綴,並以日期爲後綴。

5.所有存儲相同數據的列名和列類型必須一致。

二、數據庫基本設計規範

1.所有的表必須使用InnoDB存儲引擎:

沒有特殊要求(列存儲、存儲空間數據)的情況下,所有表必須使用InnoDB引擎(5.5之前默認MyISAM,5.5之後默認InnoDB),

因爲InnoDB支持事務,支持行級鎖,在高併發下性能更好,有更好的安全恢復。

2.數據庫和表的字符集統一使用UTF-8:

兼容性更好,統一字符集可以避免由於字符集轉換產生的亂碼,不同的字符集比較前需要轉換會造成索引失效,如果數據庫中有存儲emoji表情的需要,字符集需要採用utf8mb4字符集。

3.所有表和字段都需要添加註釋:

使用commen從句添加表和列的備註,從一開始就進行數據字典的維護。

4.儘量控制單表數據量的大小,建議控制在500萬以內:

500萬不是mysql數據庫的限制,過大會造成修改表結構,備份恢復都有很大的問題。

可以用歷史數據歸檔,分庫分表等手段來控制數據量大小。

5.謹慎使用mysql分區表:

分區表,在物理上表現爲多個文件,在邏輯上表現爲一個表。

謹慎選擇分區鍵,跨分區查詢效率可能更低;建議採用物理分表的形式管理大數據。

6.儘量做到冷熱數據分離,減小表的寬度:

MySQL限制每個表最多存儲4096列,並且每行數據的大小不能超過65535字節。

減少磁盤IO,保證熱數據的內存緩存命中率,更有效的利用緩存,避免讀入無用的冷數據。經常使用的列放到一個表中。

 

 

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