MySQL作為最流行的關係型資料庫管理系統,重要性不言而喻。面試時它也是重點考察物件之一,估計大家都有過被MySQL相關問題支配的經歷:
如何理解MySQL中加鎖原理以及最終死鎖形成的原因 ?
介紹一下連線池的工作方式,為什麼 mysql 的連線數說爆就爆了?
簡潔描述下 MySQL 中 InnoDB 支援的四種事務隔離級別名稱,以及逐級之間的區別?
說一下隔離級別的語意,必須使用事務的話繞不開,為什麼同樣的程式碼,遷移到 RDS 後行為會不一致?
上面幾個問題,你能全部答出來嗎?
其實,無論是後端程式員、前端程式員,還是架構師,資料庫是所有開發人員需要面對的共性部分。大家工作專案中的效能問題,容易出現瓶頸的地方常常是MySQL這塊,用好它對於整體專案效能提升會有很大幫助。可以說MySQL掌握的越深入,你能做的事情就越多。
有些人覺得自己花了不少精力去學如何做MySQL效能最佳化,但進展不快,很可能忽視了這點:有了效能分析的技術儲備,才能更好掌握效能最佳化。最近我整理了一套MySQL影片,由淺及深講了MySQL效能分析 + 效能最佳化,內容很細,基本改寫了大家日常工作中經常碰到的一些問題,有必要共享給讀者。
具體有哪些細節內容?
【 MySQL執行計劃檢視、索引失效分析、加鎖分析 】
1. 索引最佳化之組合索引的使用技巧
組合索引、最左字首原則
2. explain執行計劃重要引數select_type講解
MySQL最佳化器、子查詢、聯合查詢、臨時表
3. explain執行計劃重要引數type講解
MySQL最佳化器、主鍵索引、唯一索引、非唯一索引、組合索引、索引改寫
4. explain執行計劃重要引數extra講解
MySQL最佳化器、索引改寫、檔案排序、ICP
5. 索引失效案例分析
組合索引、最左字首原則、索引改寫
【 MySQL鎖和事務篇 】
1. InnoDB儲存引擎記憶體結構之Buffer Pool
InnoDB的架構圖、InnoDB記憶體結構和物理檔案之間的工作關係、資料頁、索引頁
2. InnoDB儲存引擎記憶體結構之Redo Log Buffer
InnoDB的架構圖、Redo log工作原理和落盤原理
3. InnoDB儲存引擎物理檔案之系統表空間和使用者表空間檔案
InnoDB的架構圖、系統表空間檔案和使用者表空間檔案
4. InnoDB儲存引擎物理檔案之重做日誌檔案和歸檔檔案
InnoDB的架構圖、重做日誌檔案、重做日誌緩衝
5. InnoDB儲存引擎之重做日誌落盤機制
InnoDB的架構圖、落盤機制、WAL(Write ahead redo log)、Force-log-at-commit、checkpoint機制
6. InnoDB儲存引擎事務原理之原子性、永續性和一致性實現
redo log、undo log和Force Log at Commit機制、checkpoint機制
7. InnoDB儲存引擎事務原理之隔離性實現
MVCC、Lock-based CC、一致性非鎖定讀(consistent nonlocking read)、快照讀&當前讀
8. InnoDB儲存引擎之一條簡單SQL的行鎖加鎖實現分析
record lock、gap lock、next key lock、RR和RC隔離級別、MVCC機制、主鍵索引、輔助索引
9. InnoDB儲存引擎之一條複雜SQL的行鎖加鎖實現分析
record lock、gap lock、next key lock、RR和RC隔離級別、MVCC機制、主鍵索引、輔助索引
10. InnoDB儲存引擎之死鎖原理分析
主鍵索引、輔助索引、死鎖