from:http://mingxinglai.com/cn/2015/12/material-of-mysql/

我這里推薦幾本MySQL的好書,應該能夠有效避免學習MySQL的彎路,并且達到一個不錯的水平。 我這里推薦的書或材料分為兩個部分,分別是MySQL的使用和MySQL的源碼學習。在介紹的過程中,我會穿插簡單的評語或感想。

1.MySQL的使用

1.1 MySQL技術內幕:InnoDB存儲引擎

學習MySQL的使用,首推姜承堯的《MySQL技術內幕:InnoDB存儲引擎》,當然不是因為姜sir是我的經理才推薦這本書。這本書確實做到了由漸入深、深入淺出,是中國人寫的最贊的MySQL技術書籍,符合國人的思維方式和閱讀習慣,而且,這本書簡直就是面試寶典,對于近期有求職MySQL相關崗位的朋友,可以認真閱讀,對找工作有很大的幫助。當然,也有人說這本書入門難度較大,這個就自己取舍了,個人建議就以這本書入門即可,有不懂的地方可以求助官方手冊和google。

MySQL技術內幕

1.2 MySQL的官方手冊

我剛開始學習MySQL的時候誤區就是,沒有好好閱讀MySQL的官方手冊。例如,我剛開始很難理解InnoDB的鎖,尤其是各個情況下如何加鎖,這個問題在我師弟進入百度做DBA時,也困擾了他一陣子,我們兩還討論來討論去,其實,MySQL官方手冊已經寫得清清楚楚,什么樣的SQL語句加什么樣的鎖,當然,MySQL的官方手冊非常龐大,一時半會很難看完,建議先看InnoDB相關的部分。

http://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html

1.3 MySQL排錯指南

MySQL排錯指南》是2015年夏天引入中國的書籍,這本書可以說是DBA速成指南,介紹的內容其實比較簡單,但是也非常實用,對于DBA這個講究經驗的工種,這本書就是傳授經驗的,可能對有較多工作經驗的DBA來說,這本書基本沒有什么用,但是,對于剛入職場的新人,或學校里的學生,這本書會有較大的幫助,非常推薦。

MySQL排錯指南

1.4 高性能MySQL

高性能MySQL》是MySQL領域的經典之作,擁有廣泛的影響力,學習MySQL的朋友都應該有所耳聞,所以我就不作過多介紹,唯一的建議就是仔細看、認真看、多看幾遍,我每次看都會有不小的收獲。這就是一本雖然書很厚,但是需要一頁一頁、一行一行都認真看的書。

高性能MySQL

1.5 數據庫索引設計與優化

如果認真學習完前面幾本書,基本上都已經對MySQL掌握得不錯了,但是,如果不了解如何設計一個好的索引,仍然不能成為牛逼的DBA,牛逼的DBA和不牛逼的DBA,一半就是看對索引的掌握情況,《數據庫索引設計與優化》就是從普通DBA走向牛逼DBA的捷徑,這本書在淘寶內部非常推崇,但是在中國名氣卻不是很大,很多人不了解。這本書也是今年夏天剛有中文版本的,非常值得入手以后跟著練習,雖然知道的人不多,豆瓣上也幾乎沒有什么評價,但是,強烈推薦、吐血推薦!

數據庫索引設計與優化

1.6 Effective MySQL系列

Effective MySQL系列》是指:

  • Effective MySQL Replication Techniques in Depth
  • Effective MySQL之SQL語句最優化
  • Effective MySQL之備份與恢復

effective

這一系列并不如前面推薦的好,其中,我只看了前兩本,這幾本書只能算是小冊子,如果有時間可以看看,對某一個”模塊”進入深入了解。

2.MySQL的源碼

關于MySQL源碼的書非常少,還好現在市面上有兩本不錯的書,而且剛好一本講server層,一本講innodb存儲引擎層,對于學習MySQL源碼會很有幫助,至少能夠更加快速地了解MySQL的原理和宏觀結構,然后再深入細節。此外,還有一些博客或PPT將得也很不錯,這里推薦最好的幾份材料。

2.1 InnoDB - A journey to the core

InnoDB - A journey to the core》 是MySQL大牛Jeremy Cole寫的PPT,介紹InnoDB的存儲模塊,即表空間、區、段、頁的格式、記錄的格式、槽等等。是學習Innodb存儲的最好的材料。感謝Jeremy Cole!

2.2 深入MySQL源碼

登博的分享《深入MySQL源碼》,相信很多想了解MySQL源碼的朋友已經知道這份PPT,就不過多介紹,不過,要多說一句,登博的參考資料里列出的幾個博客,都要關注一下,干貨滿滿,是學習MySQL必須關注的博客。

2.3 深入理解MySQL核心技術

深入理解MySQL核心技術》是第一本關于MySQL源碼的書,著重介紹了MySQL的Server層,重點介紹了宏觀架構,對于剛開始學習MySQL源碼的人,相信會有很大的幫助,我在學習MySQL源碼的過程中,反復的翻閱了幾遍,這本書剛開始看的時候會很痛苦,但是,對于研究MySQL源碼,非常有幫助,就看你是否需要,如果沒有研究MySQL源碼的決心,這本書應該會被唾棄。

深入理解MySQL核心技術

2.4 MySQL內核:InnoDB存儲引擎

我們組的同事寫的《MySQL內核:InnoDB存儲引擎》,可能宇宙范圍內這本書就數我學得最認真了,雖然書中有很多編輯錯誤,但是,平心而論,還是寫得非常好的,相對于《深入理解MySQL核心技術》,可讀性更強一些,建議研究Innodb存儲引擎的朋友,可以了解一下,先對Innodb有一個宏觀的概念,對大致原理有一個整體的了解,然后再深入細節,肯定會比自己從頭開始研究會快很多,這本書可以幫助你事半功倍。

MySQL內核

2.5 MySQL Internals Manual

MySQL Internals Manual》相對于MySQL Manual來說,寫的太粗糙,誰讓人家是官方文檔呢,研究MySQL源碼的時候可以簡單地參考一下,但是,還是不要指望文檔能夠回答你的問題,還需要看代碼才行。

http://dev.mysql.com/doc/internals/en/

2.6 MariaDB原理與實現

評論里提到的《MariaDB原理與實現》我也買了一本,還不錯,MariaDB講的并不多,重點講了Group Commit、線程池和復制的實現,都是MySQL Server層的知識,對MySQL Server層感興趣的可以參考一下。

MariaDB

3. 后記

希望這里推薦的材料對學習MySQL的同學、朋友有所幫助,也歡迎推薦靠譜的學習材料,大家共同進步。