首頁  >  文章  >  資料庫  >  記錄MySQL開發規範

記錄MySQL開發規範

coldplay.xixi
coldplay.xixi轉載
2020-12-21 09:56:061516瀏覽

Mysql影片教學欄位介紹MySQL的開發規格

記錄MySQL開發規範

推薦(免費):mysql影片教學

#.

  • #基礎規格
  • 使用innodb儲存引擎
  • 表格字元集使用utf-8
  • #所有表格新增註解
  • 單表資料量建議控制在5000W以內
  • 不再資料庫儲存圖、檔案等大資料

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

    禁止測試、開發環境直連資料庫
  • 命名規格
  • 庫名稱表名字段名必須有固定的命名長度,12個字元以內
  • 庫名、表名、欄位名稱禁止超過32個字元。須見名之意
  • 庫名、表名、字段名禁止使用MySQL保留字

臨時庫、表名必須以tmp為前綴,並以日期為後綴

    備份庫、表必須以bak為前綴,並以日期為後綴
  • 庫、表格、欄位開發設計規格
  • 禁止使用分區表
  • 拆分大欄位和翻身顧問頻率低的字段,分離冷熱資料

  • 用HASH進散表,表名後綴使進制數,下標從0開始

  • 依日期時間分錶需符合

    YYYY[MM][DD][HH]
  • 格式
  • 採用適當的分庫分錶策略。例如千庫十表、十庫百表等
  • 盡可能不適用text、blob型別
  • 用decimal代替float和double存儲精確浮點數
  • 越簡單越好:將字元轉換為數字、使用tinyint來取代enum類型
  • ##所有欄位均為not null
  • 使用unsigned儲存非負數
  • int型別固定佔有4位元組儲存
  • 使用timestamp儲存時間
  • 使用int unsigned儲存ipv4
  • 使用varbinary儲存大小寫敏感的變長字串


    #禁止在資料庫中儲存明文密碼,把密碼加密後儲存

    用好數值類型欄位

    類型最小值
    字節

    #最大值


    tinyint

    1
    -128

    #127

    ##127

    smallint

    2

    -32768

    32767

    #mediumint

    3

    #-8388608

    #8388607
    ######int#############4###########-2147483648#### ########2147483647###################bigint############8############################################ ###-9223372036854775808#############9223372036854775807################

    如果數值欄位沒有那麼大,就不要用bigint

  • #儲存ip最好用int儲存而不是char(15)

  • #不允許使用enum

  • 避免使用null欄位

    null欄位很難查詢一花,null欄位的索引需要額外空間,null欄位的複合索引無效。

#索引規格

  • #單一表中的索引數量不超過5個

  • 單一索引中的字段數不超過5個

  • #對字串使用前綴索引,前綴索引長度不超過8個字符

  • 建議優先考慮前綴索引,必要可新增偽列並建立索引

  • 表必須有主鍵

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

  • 盡量不選擇字串列作為主鍵

  • 不使用uuid md5 hash這些作為主鍵-太離散

  • 預設使非空的唯一鍵作為主鍵

  • 建議選擇自增或發號器

  • 重要的SQL必須必須被索引,例如update、delete語句的where條件列、order by、group by、distinct的欄位

  • 多表join的欄位注意

<p>1.区分度最大的字段放在前面<br>2.核SQL优先考虑覆盖索引<br>3.避免冗余和重复索引<br>4.索引要综合评估数据密度和分布以及考虑查询和更新比例<br></p>
  • #索引禁忌

#
<p>1.不在低基数列上建立索引、例如性别<br>2.不在索引列记性数学运算和函数运算<br></p>
  • 盡量不使用外鍵

<p>1.外键用来保护参照完整性,可以业务端实现<br>2.对父表和字表的操作会互相影响,降低可用性<br></p>
  • 索引命名

<p>1.非唯一索引必须以 inx_字段1_字段22.唯一索引必须以 uniq_字段1_字段2<br></p>
  • 索引欄位的預設值不能為空。 null非常影響索引的查詢效率。

  • 重複檢視和資料表相關的SQL,符合最左字首的特點建立索引。多條欄位重複的索引,要修改語句條件欄位的順序,為其建立一個聯合索引,減少索引數量。

  • 能使用唯一索引就使用唯一索引

  • #研發要經常使用explain,如果發現索引選擇性差,必須讓他們學會使用hint 。

SQL規格

  • #SQL語句盡可能簡單

  • 事物要簡單,整個事物的時間產生過度不要太長

  • 避免使用觸發器、函數、預存程序

  • 降低業務耦合度,為sacle out,sharding留有餘地

  • #避免在資料庫中進行數學運算,mysql不擅長數學運算和邏輯判斷

  • ##不要用selecy *,查詢那幾個字段就select那幾個字段

  • sql中使用or的改寫成in,or的效率沒有in的效率高

  • in裡面數字的數量建議1000以內

  • limit分頁注意效率。 limit越大,效率越低。

  • 使用union all取代union

  • #避免讓大表join

  • 使用group bu分組、自動排序

  • 對資料的更新要打散後批次更新,不要一次更新太多資料

  • 減少和資料庫的互動次數

  • 注意使用效能分析工具

  • SQL語句要求所有研發,SQL關鍵字全部大寫,每個字只允許一個空格

  • SQL語句不可以出現隱含轉換

  • #能不用not in就不用

  • #禁止使用前綴是%的like

  • 不使用負向查詢,如not in、not like

  • 禁止在資料庫總跑大查詢

讓預編譯語句,只傳參數,比傳遞SQL語句更有效率。降低SQL注入。

禁止將order by rand

  • #禁止單條SQL語句同時更新多個表

  • 流程規格
  • 所有的建表操作需要事先告知該表涉及的查詢SQL

  • 所有的建表需要確定建立那些索引後才可以建表上線

  • 所有的改表結構、加索引操作都需要涉及到所該表的查詢SQL發出來通知DBA等相關人員

  • 在新表加字段之前,要求研發至少提前3天郵件出來,給dba門評估、優化和審核

  • 批次匯入、匯出資料必須事先通知DBA協助觀察

禁止線上從庫執行後端管理和統計類別查詢########### #禁止super權限的應用程式帳戶存在############不再業務高峰期批次更新、查詢資料庫#########

以上是記錄MySQL開發規範的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除