MySQL資料庫開發的 36 條軍規

2021-09-24 17:09:13 字數 1096 閱讀 9355

來自一線的實戰經驗,主要針對dba和後端開發人員,總是在災難發生後,才想起容災的重要性;總是在吃過虧後,才記得曾經有人提醒過。

核心軍規

盡量不在資料庫做運算

控制單錶資料量 純int不超過10m條,含char不超過5m條

保持表身段苗條

平衡正規化和冗餘

拒絕大sql,複雜事務,大批量任務

欄位類軍規

用好數值字段,盡量簡化字段位數

把字元轉化為數字

優先使用enum或set

避免使用null欄位

少用並拆封text/blob

不在資料庫中存

索引類軍規

謹慎合理新增索引

字元字段必須建立字首索引?

不在索引列做運算

自增列或全域性id做innodb主鍵

盡量不用外來鍵

sql類軍規

sql盡可能簡單

保持事務連線短小

盡可能避免使用sp/trigger/function

盡量不用select *

改寫or為in()

改寫or為union

避免負向查詢和%字首模糊查詢

count不要使用在可null的字段上面

減少count(*)

limit高效分頁,select * from message where id > 9527 (or sub select) limit 10

使用union all 而不用union

分解鏈結,保證高併發

group by 去除排序

同資料型別的列值比較

load data匯入資料,比insert快20倍

打散大批量更新,盡量凌晨操作

約定類軍規

隔離線上線下

禁止未經dba認證的子查詢

永遠不在程式段顯式加鎖

表字符集統一使用utf8mb4

Mysql資料庫開發36條軍規

盡量不在資料庫做運算 控制單錶資料量 保持表身段苗條 平衡正規化與冗餘 拒絕3b 大sql 大事物 大批量 用好數值字段型別 將字元轉化為數字 優先使用enum或set 避免使用null欄位 少用並拆分text blob 不在資料庫裡存放 謹慎合理新增索引 字元字段必須建立字首索引 不在索引列做運算...

MySQL 資料庫開發的 36 條軍規

mysql 資料庫開發的 36 條軍規 寫在前面的話 總是在災難發生後,才想起容災的重要性 總是在吃過虧後,才記得曾經有人提醒過。一 核心軍規 1 不在資料庫做運算 cpu計算務必移至業務層 2 控制單錶資料量 單錶記錄控制在1000w 3 控制列數量 字段數控制在20以內 4 平衡正規化與冗餘 為...

MySQL資料庫開發的 36 條軍規!

一 核心軍規 盡量不在資料庫做運算 控制單錶資料量 純int不超過10m條,含char不超過5m條 保持表身段苗條 平衡正規化和冗餘 拒絕大sql,複雜事務,大批量任務 二 欄位類軍規 用好數值字段,盡量簡化字段位數 把字元轉化為數字 優先使用enum或set 避免使用null欄位 少用並拆封tex...