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存儲引擎之死鎖原理分析
主鍵索引、輔助索引、死鎖