共計 1493 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 有哪些開發規范,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
#MySQL 開發規范
## 命名規范
庫名、表名、字段名必須使用小寫字母,并采用下劃線分割
庫名、表名、字段名禁止超過 32 字字符。須見名之意
庫名、表名、字段名禁止使用 Mysql 保留字
臨時庫、表名必須以 tmp 為前綴,并以日期為后綴
備份庫、表名必須以 bak 為前綴,并以日期為后綴
create table user ...
tmp_user_20160606
bak_user_20160606
## 基礎規范
使用 innodb 存儲引擎
表字符集使用 utf-8
所有表必須添加注釋
單表數據量控制在 5000w 以內
不在數據庫中存儲圖片、文件等大數據
禁止在線上做數據庫壓力測試
## 庫表設計
禁止使用分區表
拆分大字段和訪問頻率低的字段,分離冷熱數據
用 hash 進行散表,表名后綴使用十進制數,下標從 0 開始
按日期時間分表需符合 YYYY[MM][DD][HH] 格式
采用合適的分庫分表策略。例如十庫百表等
## 字段設計
所有字段均定義為 not null
盡量不使用 TEXT、BLOB 類型
使用 decimal 代替 float 和 double 存儲精確浮點數
使用 tinyint 代替 enum 類型
使用 unsigned 存儲非負整數
使用 timestamp 存儲時間
使用 int 存儲時間戳
使用 int 存儲 ip
禁止在數據庫存儲明文密碼
## 索引規范
單張表索引數量不超過 5 個
單個索引中的字段數不超過 5 個
前綴索引長度不超過 8 個字符
區分度最大的字段放在前面。如:聯合索引
盡量不選擇字符串列
不使用外鍵
不使用更新頻繁的列
不使用 UUID MD5 HASH
不使用 % 前導的查詢,如 like %ab
不使用負向查詢,如 not in/like
不在低基數列上建立索引,例如:性別
不在索引列進行數學運算和函數運算
##SQL 設計
充分利用前綴索引,例如:最左前綴
不使用 select *
不能同時用到兩個范圍條件
不使用存儲過程、觸發器、視圖等
不使用大表 join
不使用數學運算和邏輯判斷
不使用 order by rand()
不使用單條 sql 語句同時更新多個表
多使用 insert … on duplicate key update
多使用 replace into、insert ignore、insert into values(),(),()
多使用 update … where id in(10,20,50,…)
使用 in 代替 or, in 的值不超過 1000 個
使用 explain 診斷,避免生成臨時表
使用 union all 而不是 union
###good select * from profiles where sex= M order by rating limit 10; select * from profiles inner join (select from profiles where x.sex= M order by rating limit 100000,10) as x using (); ###bad select * from profiles where sex= M order by rating limit 100000,10;
## 行為規范
禁止有 super 權限的應用程序賬號存在
不在業務高峰其期批量更新、查詢數據庫
提交線上建表改表需求,必須詳細注明所有相關 sql 語句
上述就是丸趣 TV 小編為大家分享的 MySQL 有哪些開發規范了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節