久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL開發規范有哪些

172次閱讀
沒有評論

共計 2213 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章將為大家詳細講解有關 MySQL 開發規范有哪些,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

基礎規范

使用 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

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 的字段注意

1. 區分度最大的字段放在前面
2. 核 SQL 優先考慮覆蓋索引
3. 避免冗余和重復索引
4. 索引要綜合評估數據密度和分布以及考慮查詢和更新比例

索引禁忌

1. 不在低基數列上建立索引、例如性別
2. 不在索引列記性數學運算和函數運算

盡量不使用外鍵

1. 外鍵用來保護參照完整性,可以業務端實現
2. 對父表和字表的操作會互相影響,降低可用性

索引命名

1. 非唯一索引必須以 inx_字段 1_字段 22. 唯一索引必須以 uniq_字段 1_字段 2

索引字段的默認值不能為空。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 開發規范有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計2213字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 华蓥市| 炎陵县| 民权县| 东宁县| 四川省| 合水县| 喀什市| 台湾省| 曲靖市| 新乡市| 沈阳市| 赞皇县| 习水县| 莱西市| 板桥市| 鄂托克旗| 新营市| 桐乡市| 宾阳县| 巍山| 临高县| 长武县| 晋城| 桐乡市| 乡宁县| 万荣县| 浮山县| 宁武县| 镇安县| 台中市| 平昌县| 盐津县| 阳东县| 许昌县| 进贤县| 紫云| 高雄市| 五河县| 肃宁县| 赤水市| 齐齐哈尔市|