高效能可擴充MySQL資料庫設計及架構最佳化 電商項目_1

來源:互聯網
上載者:User

標籤:電商

一 資料庫設計規範


1 命名規範 

所有資料庫物件名稱必須用小寫字母並底線分割

對象名稱禁止使用MySQL保留關鍵字

命名要做到見名識義,不超過32位元組

暫存資料表必須tmp首碼 日期尾碼

備份庫表bak首碼 日期尾碼

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

2 資料庫基本設計規範

所有表必須用innodb引擎

資料庫和表字元集同意使用utf8(全儲存中文的可以使用gbk 或是gbk2312)

所有表和欄位都使用comment加註釋

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

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

謹慎使用MySQL分區表

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

禁止在表中建立預留欄位

禁止在資料庫中儲存圖片 檔案等位元據

禁止線上上做資料庫的壓力測試

禁止從開發環境 測試環境串連生產環境的資料庫


3索引設計規範

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

每個innodb表必須有一個主鍵,不適用頻繁更新的列為主鍵 不適用多留主鍵

常見索引留建議: 在select update delete語句中where從句中的列

包含在order by 、group by  distinct中的欄位

多表串連的關聯列

如何選擇索引列的順序:

區分度最高的列放在聯合索引的最左側(盡量選主鍵)

欄位小的列放在聯合索引的最左側

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

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


4 資料庫欄位設計規範

有限選擇符合儲存需要的最小的資料類型,

    比如講字串轉化的數字類型儲存

對於非負數資料採用無符號整形進行儲存( unsigned int)

避免使用text blob enum類型

盡量把列定義為not null

使用大datetime 或timestamp類型儲存時間

同財務相關的金額類資料 必須使用decimal類型


5 資料庫sql開發規範

建議使用先行編譯語句進行資料庫操作

避免使用雙%的查詢條件 如like %w%

應該對以後的擴充進行考慮

程式串連

禁止使用select *

避免使用子查詢 可轉化為join操作

避免使用join關聯太多的表 建議不少過5個

減少同資料庫的互動次數

明顯不會有重複值是使用union all代替union

拆分複雜的大sql為多個小sql


6 資料庫操作行為規範

超100萬行的批量些操作 要分批多次進行操作

對大表使用pt-online-schema-change修改表結構

禁止為程式使用的帳號賦予super許可權,遵循許可權最小原則,不準有drop許可權


高效能可擴充MySQL資料庫設計及架構最佳化 電商項目_1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.