mysql資料庫開發規範

2022-07-03 12:39:14 字數 1779 閱讀 7923

對規範的遵守可用二八原則,不要教條。為滿足實際需求 可忽視部分規範。

1.索引規範

*目標|--利用最小的索引成本找到需要的行記錄

*原則|--做字首匹配

|--選擇區分度高的列做字首索引列

|--盡量使用重複索引 與where條件匹配

|--避免重複索引

|--索引列盡量包含 group by、order by所涉及的列

`--查詢結果比較大時 考慮索引覆蓋

2.sql規範

*原則|--避免大事務 減少等待和競爭

|--不要使用* 使用具體列名

|--遇到分頁查詢 使用延遲關聯解決(如果有打offset,可先選取id,然後用主鍵id關聯)

|--避免多表查詢 避免join

|--in元素禁止超過300個

|--避免%字首做模糊查詢,不走索引

|--不要一次更新大量資料(>30000)

|--盡量使用union或in 代替or

|--避免使用子查詢 盡量使用join

`--不使用負向查詢 not in/like 使用in 反向代替

3.ddl規範

*前提|--ddl會鎖表,評估鎖表給業務系統帶來的影響

*原則|--所有變更提前一天提交

|--日常變更工作日下班後,重大變更時間溝通後確定

|--所有ddl變更 需和研發溝通 審核後再提交

`--所有新上線的表必須確定索引後才可上線

4.表的設計規範

*原則|--使用innodb儲存引擎,表的結尾必須是engine=innodb auto_increment=1 default charset=uft8mb4

|--表必須帶有物理主鍵

| |--id int(10) unsigned primary key not null auto_increment

| |--id bigint(19) unsigned primary key not null auto_increment

| |--int(m) m 表示最大顯示寬度,和數字位數也無關係。int(3),int(8) 在磁碟上都是占用 4 btyes 的儲存空間

| `--預估資料會無限增加的表,主鍵一律所以用bigint(19) unsigned

|--禁止使用字元做主鍵

|--禁用聯合主鍵

|--不在資料庫中儲存 檔案等大資料

`--禁止使用分割槽表,定期建立分割槽表會給系統運維造成隱患

5.列設計規範

*原則|--儘量減少儲存空間

|--盡量使用數值型別+unsigned

|--禁用blob/text欄位

|--禁用null值,建議在定義時都加上預設值

| |--null欄位很難查詢優化

| |--null欄位的復合索引無效

| `--null欄位的索引需要額外空間

|--禁止使用外來鍵

|--使用unsigned儲存非負數

`--varchar(n) n表示的是字元數不是位元組數。

|--mysql中乙個表中所有varchar欄位最大長度和是65535個位元組

`--進行排序和建立臨時表時,會使用n的長度申請記憶體

6.命名規範

*規範|--庫/表/列/索引名稱一律小寫

|--命名不要超過32個字元

|--索引

| |--格式為idx_列名縮寫

| `--唯一索引 uniq_列名縮寫

`--做到見名知意

MYSQL資料庫開發規範

自己總結的mysql開發規範,夠用就行了。1 表 1.1 表必須要有主鍵,主鍵使用自動遞增,型別為int。1.2 表名使用有意義的英文單詞,可用下劃線分割。如需使用縮寫時,不可使用意義不明的縮寫。1.3 需要多表join的字段,資料型別保持絕對一致。1.4 字段命名時需要加上表名,確保所有表中的字段...

Mysql 資料庫開發規範

一 基礎規範 1 必須使用innodb儲存引擎 解讀 支援事務 行級鎖 併發效能更好 cpu及記憶體快取頁優化使得資源利用率更高 2 必須使用utf8字符集 解讀 萬國碼,無需轉碼,無亂碼風險,節省空間 3 資料表 資料字段必須加入中文注釋 解讀 n年後誰知道這個r1,r2,r3欄位是幹嘛的 4 禁...

MySQL 資料庫開發規範

一 表 單個表的字段數控制在 20個以下,最好不超過50個 單個表不超過20個char 或varchar 字段 單錶不超過50個純int欄位 拒絕大sql,大事務,批量操作 二 字段型別定義 字段型別選取原則 1 選取合適範圍的資料型別 2 只取正值的數值型別,新增 unsigned屬性 3 固定長...