mysql 優(yōu)化流程

1 . 預(yù)發(fā)跑 SQL explain

2. 排除 緩存 SQL nocache

3. 看一下行數(shù)對不對 不對可以用analyze table t 矯正

4. 添加索引 , 索引不一定是最優(yōu)的 force index 強制走 索引, 不建議使用

5. 存在回表的情況

6. 覆蓋索引避免回表, 不要* ,主鍵 索引

7. 聯(lián)合索引,不能無限制建 ,高頻 場景

8. 最左前原則 按照索引定義的字段順序?qū)憇ql

9 . 合理安排聯(lián)合索引的順序

10. 5.6版本之后, 索引下推, 減少回表次數(shù)

11. 給字符串 加索引

       前綴索引
      倒序存儲
      Hash

12 . 數(shù)據(jù)庫的fush 的時機

1.redo log 滿啦, 修改checkpoint flush 到磁盤
2. 系統(tǒng) 內(nèi)存不足淘汰數(shù)據(jù)頁

buffer pool 要知道磁盤的IO能力, 設(shè)置 innodb_io_capacty 設(shè)置磁盤的IO PS fio測試
innodb_io_capacity 設(shè)置低了, 會讓innoDB 錯誤估算系統(tǒng)能力,導(dǎo)致臟頁累積

3. 系統(tǒng)空閑的時候,找間隙刷臟頁
4. mysql正常關(guān)閉,會把內(nèi)存臟頁 flush到磁盤

13 .inndb刷磁盤速度

1.臟頁比例
2.redolog 寫盤的速度
3.innodb_fulsh_nieighbors 機械磁盤的隨機io不太行 減少隨機io性能大幅提升 設(shè)置為 1最好
4.現(xiàn)在都是ssd了, 設(shè)置為0 就好了, 8.0 之后默認為 0

14. 索引字段不要做函數(shù)操作,會破壞索引值的有序性,優(yōu)化器會放棄走樹結(jié)構(gòu) ,如果觸發(fā)隱式轉(zhuǎn)換 那也會走cast函數(shù) 會放棄走索引

15 字符集 不同可能走不上索引, convert 也是函數(shù)走不上

pps:

索引 選擇, 1.普通索引,唯一索引,覆蓋索引,最左前綴索引

MVCC

1.版本鏈 在聚集索引中,要兩個隱藏列 trx_id roll_pointer
2.讀未提交,(直接讀取最新版本)
3.序列化 (加鎖)

  1. Read View (讀已提交, 每次讀取生成一個)(可重復(fù)度, 每一次生成一個)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容