mysql使用規範 MySQL使用規範 MySQL

2021-10-17 16:01:34 字數 2682 閱讀 5054

bitscn.com

mysql使用規範

一、 核心規範

1. 不用資料庫做運營,如md5()、order by rand()

2. 控制單錶資料量

a) 單錶純int不超過1000w

b) 單錶含char不超過500w

c) 單庫不超過300-400個表

3. 表字段數少而精

a) 影響因素

i. io高效

ii. 全表遍歷

iii. 表修復快

iv. 提高併發

v. alter table快

b) 單表字段上限控制在20-50個

4. 拒絕大sql、大事務、大批量

二、 字段規範

1. 用好數值字段型別

a) tinyint(1 byte)

b) smallint(2b)

c) mediumint(3b)

d) int(4b)、bigint(8b)

e) float(4b)、double(8b)

f) decimal(m,d)

2. 盡量用數值型字段,非字串型

a) 更高效

b) 查詢更快

c) 占用空間更小

3. 優先使用enum或set

a) enum佔1位元組,轉為數值運算

b) set視節點訂,最多佔8位元組

c) 比較時需要加單引號

4. 避免使用null欄位

a) 很難進行查詢優化

b) null列加索引,需要額外空間

c) 含null符合索引無效

5. 少用或拆分text/blob

a) text型別處理效能遠低於varchar

b) 如必須使用則拆分到單獨的表

6. 不在資料庫裡存

三、 索引規範

1. 謹慎合理新增索引

a) 改善查詢,減慢更新,索引不是越多越好

b) 能不加索引盡量不加,最好不超過字段數20%

2. 字元字段必須建字首索引

a) mysq的區分度是成平次增長的

3. 不在索引列做數**算或函式運算

a) 無法使用索引

b) 導致全表掃瞄

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

5. 盡量不用外來鍵

a) 外來鍵可節省開發量

b) 有額外開銷

c) 逐行操作

d) 可到達其他表,意味著鎖

e) 高併發時容易死鎖

四、 sql規範

1. 拒絕大sql,拆解成多條簡單sql

a) 簡單sql快取命中率更高

b) 減少鎖表時間,特別是myisam

c) 用上多cpu

2. 保持事務、db連線短小精悍

a) 使用原則:即開即用,用完即關

b) 與事務無關的操作放到事務外面,減少鎖資源的占用

c) 不破壞一致性前提下,使用多個短事務代替長事務

3. 盡可能避免使用儲存過程、觸發器、函式

4. 盡量不用select *,只取需要的資料列

5. 改下or為in

a) or效率:o(n)

b) in 效率:o(log n)

c) 當n很大時,or會慢很多,建議in的n小於200

6. 如果不同字段,改寫or為union

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

a) not、!=、<>等

b) 字首模糊使用不了索引,會導致全表掃瞄

8. 減少count

a) count(1)==count(*)全表掃瞄

b) 實時資料:用memcache,雙向更新,凌晨跑基準

c) 非實時統計:盡量用單獨統計表,定期重算

9. limt高效分頁

a) limit 偏移量越大則越慢

10. 用union all而非union

a) 若無需對結果進行去重,則用union all,union有去重開銷

11. 分解鏈結保證高併發

a) 高併發db不建議進行兩個表以上的join

12. group by 去除排序

a) group by 實現包括:分組、排序

b) 無需排序:order by null

c) 特定排序:group by desc

13. 盡量保證同資料型別的列值進行比較

a) 數值列於字元型別比較

i. 同時轉換為雙精度

ii. 進行比對

b) 字元列與數值型別比較

i. 字元列整列轉數值

ii. 不用使用索引查詢

14. load data

a) 批量裝載比單行快,不需要重新整理快取

b) 無索引比有索引裝載快

c) 盡量不用insert select

15. 打散大批量更新

16. 常見檢測db的命令

a) show profile

b) mysqlsla

c) mysqldumpslow

d) show slow log

e) show processlist

f) show query_response_time(percona)

g) explan

17. 盡量用連線代替子查詢

18. 統一字符集:utf8,校對規則:utf8_general_ci

bitscn.com

tag標籤:資料庫影響

mysql 使用規範 MySQL使用規範

一 表設計類 強制類規範 1.建立表的儲存引擎必須是innodb。2.每個表必須顯式的指定乙個主鍵。3.不允許使用聯合主鍵。4.不允許使用外來鍵。5.不允許存在和主鍵重複的索引。6.自增長字段必須是主鍵或唯一索引。7.不允許在資料庫中儲存諸如,影像之類的二進位制資料。8.不允許使用text型別字段 ...

mysql 使用規範 MySQL使用規範

mysql使用規範 一 核心規範 www.2cto.com 1.不用資料庫做運營,如md5 order by rand 2.控制單錶資料量 a 單錶純int不超過1000w b 單錶含char不超過500w c 單庫不超過300 400個表 3.表字段數少而精 a 影響因素 i.io高效 ii.全表...

MySQL使用規範

強制類規範 1.建立表的儲存引擎必須是innodb。2.每個表必須顯式的指定乙個主鍵。3.不允許使用聯合主鍵。4.不允許使用外來鍵。5.不允許存在和主鍵重複的索引。6.自增長字段必須是主鍵或唯一索引。7.不允許在資料庫中儲存諸如,影像之類的二進位制資料。8.不允許使用text型別字段 9.建表時不允...