《高性能MySQL》第四版發布后,收到了很多讀者的反饋,其中關注最多的是作為一個初學者,應該如何能夠較為系統的學習MySQL,從而應對日常作業或者獲得更好的職業發展,于是和多個業內朋友討論后,整理了一些MySQL學習的推薦資源,供初學者參考,
本文分成幾部分,包括業界專家的經驗、推薦書籍、視頻/音瞥澩、其他資源或者學習方式、MySQL學習溝通群、抽獎贈書等,
業界專家的經驗

提問:剛剛入行時,有哪些資料給你了幫助?
正式接觸 MySQL 是2011年底,當時的公司的資料庫版本主要是 5.5 版本和少量 5.1 版本,因為之前學Oracle的經驗是查看官方檔案,學習MySQL 資料主要是 “官方檔案” 和當時的淘寶DBA團隊組織的技術大學的技術分享,學習MySQL技術的技術特性和經典案例,
其實就現在而言,MySQL 官方檔案依然是最好的學習資料和教材, 里面非常詳細的說明 MySQL的基礎架構,redo,undo,讀寫邏輯,欄位型別,鎖,存盤引擎,主從復制,MGR ,性能優化等等,把官方檔案通讀一遍,基本上能超越60-70%左右的DBA,為什么不是更高呢?因為學習技術是為了使用技能,
提問:進一步了解 MySQL/資料庫,哪些資料給了你幫助?
換個回答的方式,哪些因素幫助我提升資料庫技能水平?總結起來大概三個方面:
-
掌味訓礎知識之后,會有 “紙上來得終覺淺,絕知此事要躬行”” 的想法,基于對各種MySQL 技術知識點和 功能特性的理解,搭建單節點,主備模式環境 做各種功能測驗,并且將知識點的驗證或者分析程序下來寫博客,比如死鎖,能將常見的20個死鎖常見分析程序總結下來,相信死鎖問題再也難不倒你了,
-
如果是第一條是模擬考,那么真實的業務場景則是實戰演練,在海量的業務場景下,層出不窮的業務問題和技術難點驅動 DBA 對 資料庫的使用和限制了解的更多,比如:
- truncat表 如何恢復?
- 如果有500g binlog,如何加速 binlog 應用?
- 如何洗掉3T的大表?
- 秒殺場景下資料庫設計和優化?
- 如何排查業務訪問db RT例外?
- 為什么業務寫完立即查詢當時查不到?
- 和優秀的同事或者優秀的人同行,比如有解決不了的疑惑可以咨詢內核開發,
提問:現在回頭來看,哪些資料你覺得是最推薦的,分別對于初入學,和深入學習的人來說?
對于初學者而言,首要目標是 夯實基礎,學好基礎/理論知識,
- 官方檔案
- 《高性能MySQL》
- 《MySQL性能調優與架構設計》
- 《MySQL技術內幕:InnoDB存盤引擎》
對于深入學習的人來說, 單獨的資料庫學習是沒有意義的,必須服務好具體的業務場景才能發揮其價值,推薦:
- 《資料密集型應用系統設計》
- 《性能之巔》
- 《漫畫演算法》
學習和總結各種業務場景下的資料庫架構設計 ,資料庫高可用,容災,強紅包,秒殺,直播彈幕等等,

對于初學者,建議自己手動安裝常見的架構,比如最簡單的一主一備,作為驗證環境,找一些操作案例較多的博客或公眾號文章,照著作者的思路執行,
然后再自己設計一些執行案例,先自己推導結果,再執行驗證,在驗證程序中加深理解或者勘誤,
內核學習也可以延用這個方法,在驗證程序中設想如果是自己實作這個功能的,會怎么寫,然后通過閱讀原始碼理解作者的設計思路,就是看原始碼要帶著問題去看,找只要主要流程,GDB去除錯單步執行,

推薦的重要學習資料包括:
- MySQL 官方檔案
- 《MySQL 技術內幕:InnoDB 存盤引擎》
- MySQL 周邊組件的檔案與原始碼,如percona toolkit、MHA等
- 初學者:丁奇 45 講、MySQL 官方檔案
深入學習:主要還是積累、排錯,云資料庫相關還是需要看下技術相關的論文,
推薦書籍與資源
MySQL作為當前最流行的關系型資料庫,相關的書籍也非常多,這里羅列基本推薦如下:
MySQL相關的書籍
檔案是最全面和權威的參考,而其他三本都是,根據豆瓣網友打分進行推薦的,第一本《MySQL是怎樣運行的》適用于完全的初學者,內容由淺到深,第二本《高性能MySQL》則從“優化”為入口,非常系統介紹了MySQL的架構、優化,是一本非常好的進階書籍,第三本是《MySQL技術內幕 InnoDB存盤引擎》,這本書深入的介紹了MySQL核心組件InnoDB存盤引擎,涵蓋了資料庫的事務原理、調度、物理存盤、鎖等知識,
另外,其實MySQL領域還有很多書籍偏重各有不同,這里不一一推薦了,
1、《MySQL是怎樣運行的》
這本書于2020年出版,是一本比較新的書籍,整個書籍也是圍繞其標題展開《MySQL是怎樣運行的:從根兒上理解 MySQL》,這本書最大的特點是,全書有非常清晰的脈絡,可以說是由“入門到精通”,書中放棄了一定的完整性(這個可以去看MySQL檔案),而是非常接地氣的從零開始,用了很多形象的比喻介紹MySQL資料庫的各個概念,
同時,該書籍在每個章節對相關的概念也都進入了非常深入的討論,例如,關于索引的介紹,從什么事索引、索引的物理結構開始介紹,然后,開始介紹MySQL的索引在查詢、排序等場景的使用,最后,再介紹一些常見的索引優化技巧,包括普通索引、前綴索引、覆寫索引等,
總得來說,這本書是最近幾年,面向于初學者非常不錯的一本書,
2、《高性能MySQL》
《高性能MySQL》則從“優化”為入口,將MySQL相關的知識點聚合在一起,包括了查詢性能優化(SQL優化)、高性能索引、庫表結構(Schema)優化等,也包括了服務器配置(硬體和軟體)優化、架構優化(包括了復制、只讀節點、分片)等,還介紹了部分云服務商的MySQL等內容,是一本非常適合進階閱讀的書籍,
該書籍的作者、譯者,也都是一直活躍在資料庫領域第一線的資料庫開發者,對于MySQL實踐有著非常豐富經驗,這也保障概書籍整體質量不錯,不僅可以作為系統的閱讀使用,也可以作為一個參考手冊,可以根據自己作業需要,不定期的翻閱其中的部分章節,
3、《MySQL技術內幕 InnoDB存盤引擎》
這本書則以InnoDB為切入點,非常深入的介紹了InnoDB或者說資料庫的原理,InnoDB可以說是MySQL最為核心的組件,其原理不僅僅適用于MySQL,也幾乎適用于大多數關系型資料庫系統,
具體的,概書籍覆寫的內容包括了MySQL/InnoDB物理存盤結構、索引、鎖、事務等等,本書底層原理為出發點,幫助開發者理解MySQL行為、特點,
本書非常適合,對MySQL已經有一定程度了解,又希望更加深入了解其底層實作原理的人,或者是作業中需要對MySQL原始碼層進行修改或者定制的資料庫內核開發者,
4、用好MySQL官方檔案
MySQL官方檔案可以說是最為權威、更新最為及時、質量也應該是最高的MySQL學習資料了,在早期,市面上還沒有那么書籍的時候,我個人也是通過精讀MySQL官方檔案,以此為深入學習MySQL、甚至是深入學習資料庫原理的知識庫,
但是,官方檔案為了保證完整性、準確性,會導致其看起來非常冗長、繁瑣,有時候則感覺是在隔靴撓癢,偏向于介紹實作方式或原理以及MySQL提供的功能,而不會介紹讀者最需要的最佳實踐,例如,官方檔案會詳細介紹每個欄位型別和引數詳情,但是不會告訴你,哪些欄位型別應該多用,哪些欄位型別應該少用,
了解了官方檔案的這些特性之后,官方檔案閱讀的幾個要點總結如下:
- 在閱讀MySQL官方檔案之前,需要先花些時間了解檔案的整體架構,方便后續閱讀查閱;
- 在需要了解某個具體MySQL知識點時,建議可以精讀MySQL檔案;
- 如果希望系統的了解某個MySQL特效的時候,可以完整的閱讀;
- MySQL檔案MySQL官方檔案最新的都是英文的,需要有一定的英文閱讀能力,
總得來說,多閱讀官方檔案,雖然剛開始會覺得有些晦澀,堅持下來,你會發現識訓巨大,
另外,閱讀官方檔案也要注意:也正是因為官方檔案注重保障完整性、準確性,所以必定會繁瑣、冗長,而不怎么介紹最佳實踐經驗,甚至一些主流的應用等,例如官方檔案也只會將內容限定在MySQL本身,而不會包括硬體、軟體或者云環境的相關的內容,
5、視頻/音瞥澩
現在也越來越多的人通過視頻的方式去在線的學習各類知識,B站上也有一些面相MySQL初學者的視瞥澩,質量我不太好評價,不過作為文字、書籍的補充學習,看一些視頻學習還是非常不錯的,大家可以去B站搜索一下“MySQL 初學者”就有很多的相關視頻了,質量良莠不齊,需要大家自己甄別適合自己的,這里僅推薦一下由極客時間推出的《MySQL實戰45講》,

該系列價格也非常便宜,可以說是買不了吃虧、買不了上當,反倒是容易買到自己不能全部看完/聽完的懊惱:《MySQL實戰45講》,
其他資源或者學習方式
1、使用Google/Baidu或者ChatGPT
通常,對于某個非常具體的知識點或者行業/場景最佳實踐,在檔案中都不會覆寫,但是,因為MySQL的用戶量極大,在互聯網上也有非常多的分享和討論,從初階到高階,面相各個級別的內容都有,可以說是一個大寶庫,用好了也是可以事半功倍的,
2、多總結、多分享、多交流
學習本身通常都是無趣的,如果學習的知識不能夠很快的在實際作業中使用,也很容易忘記,另一個非常好的學習方法,不僅僅限于學習MySQL,就是分享很總結,一方面,可以讓你系統的把一個知識點了解的比較完整和透徹,也可以幫你更好的記錄,大大加深理解與記憶,
3、學以致用
也許你學習MySQL的原因可能只是因為面試、解決一個作業中的問題、增長知識或者只是興趣,無論是哪個原因促使你學習,動手練習并在作業中使用這些知識,都是非常有效的,如果,你對MySQL或者資料庫很有興趣,那么則建議在當前的公司,找一個與資料庫更近的崗位作業,這樣自然可以事半功倍,
4、MySQL源代碼
MySQL是一個開源資料庫,另一個獨天得厚的資源是MySQL源代碼,不過,MySQL發展的時間已經非常長了,其代碼復雜度也比較高,可以考慮從一兩個小的模塊、小的功能點著手,去學習、驗證,
5、學術論文
當如果需要了解某個具體模塊的來龍去脈以及設計思想的時候,有時候去查找一些經典的資料庫領域論文可以很好的幫助你解決相關的疑問,有一套大部頭《Readings in Database Systems》可以作為參考或者開始,不過內容較多,需要花費大量時間,總得來說不太適合初學者,
小結
對于不同基礎的人,學習的重點和方法是各有不同的,所以本文會列舉主要的MySQL資料庫的學習資源和方法,讀者需要結合自己的實際情況選擇合適的方法,如果你有好的經驗分享,可以在留言評論談談你的經驗,
orczhou 是《高性能MySQL》的書籍的譯者,同時也是來自 NineData(www.ninedata.cloud)的工程師,NineData 向企業、開發者提供高效、安全的資料庫 SQL 開發、資料庫備份、資料復制/遷移/集成、資料對比等功能,是一個 SaaS 服務開箱即用,可以快速提升企業 SQL 開發效率,保障企業資料安全,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546258.html
標籤:MySQL
