MYSQL資料庫設計規範

2021-10-05 18:35:23 字數 2130 閱讀 1108

資料庫設計規範

命名規範

小寫字母開頭單詞之間使用下劃線分割 大小寫敏感 禁止使用保留關鍵字

不要超過32個字元

臨時表以tmp為字首 時間為字尾

備份表 bak為字首 時間為字尾

所有儲存相同資料型別的列名和列型別必須一致

所有表必須使用innodb儲存引擎

原因:預設儲存引擎  進行了很多優化 支援事務 支援行級鎖 更好的恢復性 高併發下效能更好

資料庫和表的字符集統一使用utf-8

mysql中utf-8漢字字符集佔三個位元組 ascii碼佔乙個位元組

使用comment對錶和列新增備註

從一開始就進行資料字典的維護

盡量控制單錶資料量的大小,建議控制在500萬以內

500萬並不是mysql資料庫的限制

修改表結構,備份,恢復都會有很大的問題

可以利用歷史資料歸檔,分庫分表等手段來控制資料量的大小

mysql最多可以儲存多少萬的資料呢?

這種限制取決於儲存設定和檔案系統

mysql的資料表其實就是windows下的乙個檔案

32位的檔案系統的大小最多為2個g

64位不存在限制

謹慎使用mysql分割槽表

分割槽表在物理上表現為多個表,在邏輯上表現為乙個表

分割槽表:表的儲存在不同的物理檔案中

分割槽表的不同分割槽檔案

最大列的數量為4096列

每一行的資料大小不能超過65535個位元組

盡量做到冷熱資料分離,減小表的寬度

減少磁碟io,保證熱資料的記憶體快取命中率

為了更有效的利用快取,避免讀入無用的冷資料

把經常使用的一些列放到乙個表中

禁止在表中建立預留字段

禁止在資料庫中儲存,檔案等二進位制資料

極大的影響資料庫的效能

這樣的資料儲存容量較大,會造成資料庫短期內的資料儲存容量快速增長

而資料庫在進行資料讀取時,通常會進行大量的隨機io操作,如果我們處理檔案很大,那麼io操作會非常的耗時,對資料庫的效能印象就會很大,所以禁止儲存這些資料,正確的做法就是把相應的,檔案儲存在相應的檔案伺服器中,而且伺服器中只儲存這些,檔案的位址資訊就可以了。

禁止從開發環境,測試環境直連生產環境資料庫

索引設計規範

不要濫用索引

限制每張表上索引的數量,建議單錶索引不超過5個

索引的數量和列的數量成正比

索引並不是越多越好,索引可以提高效率同樣也可以降低效率

索引可以增加查詢效率,但同樣也會降低插入和更新的效率

禁止給表中的每一列都建立單獨的索引

每個 innodb表都必須要有乙個主鍵

如果沒有主鍵,將選擇第乙個非空唯一的索引作為主鍵

如果沒有索引,將會自動生成乙個佔六個位元組的主鍵,效能並不是很好

不使用更新頻繁的列作為主鍵,不使用多列作為主鍵

如果主鍵頻繁被更新,那麼儲存資料的邏輯順序就要頻繁的變動

主鍵實際上就是乙個索引

而所謂的多列主鍵就是乙個聯合索引

因為 innodb本身就是乙個索引組織表的緣故

不要使用uuid,md5,hash,字串作為主鍵

無法保證資料的順序增長

選擇值得順序可以順序增長得一些列,列得資料不能重複

主鍵建議選擇使用自增id值

常用索引建議

where 條件語句中所出現的列

包含在order by, group by, distinct中的字段

多表join的關聯列

如何選擇索引列的順序

區分度最高的列放在聯合索引的最左側

盡量把字段長度小得列放在聯合索引的最左側

使用最頻繁的列放在聯合索引的左側

避免建立冗餘索引和重複索引

對於頻繁使用的查詢優先考慮使用覆蓋索引

覆蓋索引就是包含了所有查詢欄位的索引

覆蓋索引的好處:

避免innodb表進行索引的二次查詢

可以把隨機io變為順序io加快查詢效率

盡量避免使用外來鍵

mysql在建立外來鍵時會自動的建立索引

不建議使用外來鍵約束,但一定在表與表之間的關聯建上建立索引

外來鍵可用於保證資料的參照完整性,但建議在業務端實現

外來鍵會影響父表和子表的寫操作從而降低效能

記:缺少的以後再補充

MySQL資料庫設計規範

禁止使用mysql保留關鍵字 資料庫物件的命名要見名識義,並且最好不要超過32個字元 臨時庫表必須以tmp為字首並以日期為字尾 備份庫表必須以bak為字首並以日期為字尾 所有儲存相同資料的列名和列型別必須一致 資料庫和表的字符集統一使用utf 8。所有表和字段都要新增注釋 create table ...

MySQL資料庫設計規範

1.庫名,表名,欄位名必須使用小寫字母,多個單詞中間用下劃線隔開 2.庫名,表名,欄位名支援最多32個字元,易於辨識和減少傳輸量不要超過32 3.庫名,表名,欄位名禁止使用mysql保留關鍵字 4.臨時庫,臨時表名必須以tmp為字首並以日期為字尾 5.備份庫,備份表名必須以bak為字首並以日期為字尾...

MySQL資料庫設計規範

規範背景與目的 mysql資料庫與 oracle sql server 等資料庫相比,有其核心上的優勢與劣勢。我們在使用mysql資料庫的時候需要遵循一定規範,揚長避短。本規範旨在幫助或指導rd qa op等技術人員做出適合線上業務的資料庫設計。在資料庫變更和處理流程 資料庫表設計 sql編寫等方面...