MySQL數(shù)據(jù)庫(kù)開發(fā)的 36 條軍規(guī)!
來自:www.slideshare.net/mysqlops/mysql-9838563
來自一線的實(shí)戰(zhàn)經(jīng)驗(yàn),主要針對(duì)DBA和后端開發(fā)人員,總是在災(zāi)難發(fā)生后,才想起容災(zāi)的重要性;總是在吃過虧后,才記得曾經(jīng)有人提醒過。文末是詳細(xì)的視頻講解和PDF下載。

盡量不在數(shù)據(jù)庫(kù)做運(yùn)算
控制單表數(shù)據(jù)量 純INT不超過10M條,含Char不超過5M條
保持表身段苗條
平衡范式和冗余
拒絕大SQL,復(fù)雜事務(wù),大批量任務(wù)
用好數(shù)值字段,盡量簡(jiǎn)化字段位數(shù)
把字符轉(zhuǎn)化為數(shù)字
優(yōu)先使用Enum或Set
避免使用Null字段
少用并拆封Text/Blob
不在數(shù)據(jù)庫(kù)中存圖片
謹(jǐn)慎合理添加索引
字符字段必須建立前綴索引?
不在索引列做運(yùn)算
自增列或全局ID做InnoDB主鍵
盡量不用外鍵
SQL盡可能簡(jiǎn)單
保持事務(wù)連接短小
盡可能避免使用SP/Trigger/Function
盡量不用Select *
改寫Or為IN()
改寫Or為Union
避免負(fù)向查詢和%前綴模糊查詢
Count不要使用在可Null的字段上面
減少Count(*)
Limit高效分頁,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
使用Union ALL 而不用Union
分解鏈接,保證高并發(fā)
Group By 去除排序
同數(shù)據(jù)類型的列值比較
Load Data導(dǎo)入數(shù)據(jù),比Insert快20倍
打散大批量更新,盡量凌晨操作
隔離線上線下
禁止未經(jīng)DBA認(rèn)證的子查詢
永遠(yuǎn)不在程序段顯式加鎖
表字符集統(tǒng)一使用UTF8MB4
PDF詳細(xì)版請(qǐng)掃描下方二維碼,在后臺(tái)回復(fù) “m36” 獲取下載地址
