mysql規範使用和常用命令整理

數據庫設計規範

  • 數據庫和表的字符集統一使用 UTF8。如果數據庫中有存儲 emoji 表情的需要,字符集需要採用 utf8mb4 字符集
  • 所有表和字段都需要添加註釋。使用 comment 從句添加表和列的備註,進行數據字典的維護。
  • 禁止在表中建立預留字段,預留字段的命名很難做到見名識義,無法確認存儲的數據類型,所以無法選擇合適的類型。預留字段類型的修改,會對錶進行鎖定
  • 禁止在數據庫中存儲圖片,文件等大的二進制數據。通常文件很大,會短時間內造成數據量快速增長,數據庫進行數據庫讀取時,通常會進行大量的隨機IO操作,文件很大時,IO操作很耗時。 通常存儲於文件服務器,數據庫只存儲文件地址信息。
  • 所有數據庫對象名稱必須使用小寫字母並用下劃線分割
  • 所有數據庫對象名稱禁止使用 MySQL 保留關鍵字(如果表名中包含關鍵字查詢時,需要將其用單引號括起來)。
  • 數據庫對象的命名要能做到見名識意,並且最好不要超過 32 個字符。
  • 臨時庫表必須以 tmp_ 爲前綴並以日期爲後綴,備份表必須以 bak_ 爲前綴並以日期(時間戳)爲後綴。
  • 所有存儲相同數據的列名和列類型必須一致(一般作爲關聯列,如果查詢時關聯列類型不一致會自動進行數據類型隱式轉換,會造成列上的索引失效,導致查詢效率降低)
  • 儘可能把所有列定義爲 NOT NULL,索引 NULL 列需要額外的空間來保存,所以要佔用更多的空間
  • 使用 TIMESTAMP(4個字節)或 DATETIME 類型(8個字節)存儲時間,TIMESTAMP 存儲的時間範圍 1970-01-01 00:00:01 ~ 2038-01-19-03:14:07。TIMESTAMP 佔用4字節和INT相同,但比INT可讀性高。超出TIMESTAMP取值範圍的使用DATETIME類型存儲。

mysql是關係型數據庫。數據庫設計遵從三大範式(NF Normal Format)。參考鏈接:https://www.jianshu.com/p/3e97c2a1687b

第一大範式:原子性。例如省市區分散列而非一個地址字段

第二大範式:確保表中每列與主鍵相關

第三大範式:早2的基礎上,確保每列和主鍵直接相關而不是簡介相關

mysql 優化

sql索引、表結構、系統配置、硬件等4個方面優化。從左到右成本越來越高,優化效率變低

 

 

 

 

 

 

 

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