《MySQL是怎樣運行的:從根兒上理解 MySQL》是一本MySQL的底層運行原理的書饵筑。關(guān)于底層運行原理4個字怎么理解呢,我的理解是專注于介紹 MySQL 的 innoDB的底層存儲細節(jié)筑累,并以此為基礎延伸到分析MySQL 實際應用中的特性臭笆。
相比極客時間里面的《MySQL 實戰(zhàn)45講》,我覺得這本書更像電視劇《一代宗師》里面講到的里子而非面子市咆,更聚焦于事情的本質(zhì)而非表象汉操,所以非常推薦大家耐心閱讀。我是3.28號收到的書蒙兰,在上下班的路上斷斷續(xù)續(xù)完成了閱讀(這就是上下班需要花3個小時的好處)磷瘤,所謂的斷斷續(xù)續(xù)就是每個點都了解了,但是沒有串成線形成面搜变。今天剛好周六就抽了一下午加一晚上把所有的內(nèi)容從頭到位又串聯(lián)了一次采缚,整體下來差不多花了兩周時間才消化完。
為啥對 MySQL突然來了興趣呢挠他,緣于2021年底以來公司內(nèi)部組織了兩場分享扳抽,當時聽完分享后針對分享的PPT消化了一波,但是總感覺不得勁殖侵。雖然理解了分享中部分場景但卻無法理解背后的原理贸呢,所以斷斷續(xù)續(xù)在網(wǎng)上搜集些介紹 MySQL 的書籍就發(fā)現(xiàn)了這本書,閱讀后再重新回顧之前的分享拢军,感覺突然開竅了楞陷。
梳理了下整個書本的內(nèi)容,按照個人的理解給出閱讀的建議茉唉,首先這部分的內(nèi)容其實挺多的固蛾,但是建議聚焦于幾條核心的線:innoDB的數(shù)據(jù)存儲灿椅,索引的設計和應用腕巡,redo/undo 日志以及 mvcc 的原理。
關(guān)于 innoDB 的存儲,這部分建議閱讀章節(jié): 從一條記錄說起—— InnoDB 記錄結(jié)構(gòu)欢唾、盛放記錄的大盒子 —— InnoDB 數(shù)據(jù)頁結(jié)構(gòu)、 調(diào)節(jié)磁盤和CPU的矛盾 —— InnoDB 的 Buffer Pool》齿桃。這三個章節(jié)按照數(shù)據(jù)存儲由微觀到宏觀的順序進行講解:單條記錄的存儲結(jié)構(gòu)洲押、頁維度的存儲結(jié)構(gòu)、Buffer Pool 的存儲結(jié)構(gòu)等沧竟。
索引的設計和應用铸敏,這部分閱讀建議建立在innoDB的存儲相關(guān)章節(jié)已經(jīng)完成閱讀的基礎上,相關(guān)章節(jié)包括: 快速查詢的秘籍 —— B+ 樹索引悟泵、 好東西也得先學會怎么用 —— B+ 樹索引的使用杈笔。這兩個章節(jié)介紹索引的存儲結(jié)構(gòu)以及實際應用,跟日常工作比較有強關(guān)聯(lián)性糕非。
redo/undo 日志以及 mvcc 的原理蒙具,這部分建議閱讀章節(jié): 說過的話就一定要辦到 —— redo 日志(上)、 說過的話就一定要辦到 —— redo 日志(下)朽肥、 后悔了怎么辦 —— undo 日志 (上)禁筏、 后悔了怎么辦 —— undo 日志 (下)、 一條記錄的多幅面孔 —— 事務的隔離級別與MVCC衡招。這幾個章節(jié)主要是為了講清楚 MVCC 的底層實現(xiàn)原理篱昔。
最后推薦對 MySQL 有興趣的同學可以買來翻翻看,收獲肯定是有的始腾。