mysql 研發規範

來源:互聯網
上載者:User

標籤:ext   頻繁   files   結果   比較   datetime   sql指令碼   mysq   才有   

1. 命名
    a) 有意義。
    b) 資料庫、表,都用小寫,僅使用底線和小寫字母。
    c) 索引以idx_開頭。
    d) 命名不要過長,盡量少於25個字元。
    e) 不要使用保留字。
    f) 欄位類型、命名的一致性,相同欄位在不同表要相同類型、相同長度、相同命名。
    g) 備份表,時間尾碼。
2. 索引
    a) 聯合索引,欄位數量不超過5個。
    b) 單表索引個數,不超過5個。
    c) 唯一鍵和主鍵不要重複。
    d) 建立索引時要注意欄位順序。
    e) order by/group by用到的欄位,放到聯合索引的後面。
    f) 根據explain工具,調整sql,使之合理使用索引,盡量不出現Using filesoft、Using Temporary。
    g) 過長的varchar,可增加一個散欄欄位,為散欄欄位建立索引。較簡單的可使用md5。
    h) 範圍條件放到複合索引的最後。
3. 表設計
    a) 建議全部選擇InnoDB引擎。
    b) 每個表都應有主鍵。
    c) 盡量將欄位設定成Not null,null值的儲存需要額外的空間,且會導致比較運算更為複雜。
    d) 使用更短小的列,比如短整型,整型列的執行速度往往更快。
    e) 將大欄位、不頻繁使用的欄位分離到另外的表,表越小,執行越快。或者將頻繁更新的表分離到其他表,因為頻繁更新會導致緩衝的結果集失效,可能影響效能。註:若分離後需要經常進行表串連,就得不償失了,Mysql串連表時效能差,或者可以考慮使用程式進行串連。
    f) 精確符點數,使用decimal,不要使用float/double,會不準確。
    g) 整型定義,不要定義顯示長度。
    h) 建議不要使用enum類型。
    i) 儘可能不要使用text/blob類型。
    j) varchar(n),n表示的是字元數,不是位元組數,如varchar(255),儲存漢字,最多可以存255個。n應儘可能的小,進行排序和建立暫存資料表時,會使用n的長度申請記憶體,這一點在5.7後才有改進。varchar欄位的最大長度為65535個位元組 。
    k) 字元集,選擇utf8。
    l) 儲存日期,使用date;儲存時間建議使用tmestamp,timestamp是4位元組,datetime是8位元組。
    m) 不要在資料庫中隱藏檔。
4. sql語句
    a) 不要select *
    b) 傳參時使用預留位置方式,提高效能並且防範sql注入攻擊。
    c) 分割大操作。
    d) in 子句包含的值不應過多,建議少於100。
    e) insert 顯示指明欄位名稱,批量時,每次個數不宜過多。
    f) 避免在sql語句中進行數學運算或函數運算,避免將商務邏輯和資料存放區耦合。
    g) 避免使用預存程序、觸發器、函數等,這些特性會將商務邏輯與資料耦合在一起,並且mysql的這些特性可能會存在一些bug。
    h) 表串連會降低效能,所以能不連就不連,能少連就少連。
    i) 使用合理的SQL減少,與資料庫互動,但這一點要權衡,將一個複雜的、耗費巨大的SQL拆成多個簡單的SQL,雖然會使資料庫互動增加,但對效能是有增無減的。
5. sql指令碼
    去除特殊符號,如^M,檔案轉為Linux格式,且使用utf8無BOM格式。
6. 資料量
    a) 若最佳化的足好,單表達上億資料量也無問題,但這是理想情況。實際情況,單表資料量控制在5000萬以下,甚至,最好在1000萬以下。若資料量過大,則拆分成多個表,分表要使用應用程式層分表,最好不要使用mysql的分表特性,可能存在bug。
    b) 開發某個功能之前,應對資料存放區進行估算,若資料量較大,提前考慮最佳化。

mysql 研發規範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.