MySQL有什麼推薦的學習書籍?

我已經掌握了資料庫sql的通用語句,像創建資料庫、創建表、查詢表、高級查詢sql語句等。

我是一名程序員,我目前想深入學習MySQL,像一些高級的功能,比如安全、許可權等。本人熱衷於敲碼,所以推薦的書籍不要太有太多的圖片存在,謝謝。

PS: 不要那些×天精通的書籍。


推薦幾本書:推薦幾本學習MySQL的好書

對於想在資料庫層面深入的朋友,我這裡推薦幾本MySQL的好書,應該能夠有效避免學習MySQL的彎路,並且達到一個不錯的水平。

我這裡推薦的書或材料分為兩個部分,分別是MySQL的使用和MySQL的源碼學習。在介紹的過程中,我會穿插簡單的評語或感想。

1.MySQL的使用

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

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

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來說,這本書基本沒有什麼用,但是,對於剛入職場的新人,或學校里的學生,這本書會有較大的幫助,非常推薦。

1.4 高性能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之備份與恢復

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

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源碼的決心,這本書應該會被唾棄。

2.4 MySQL內核:InnoDB存儲引擎

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

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層感興趣的可以參考一下。

3. 後記

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


推薦MySQL Manual:MySQL :: MySQL 5.6 Reference Manual

講得最全面


入門:

-Head First:PHP MySQL.Lynn Beighley

-MySQL必知必會

-MySQL5.5從零開始學.劉增傑

-MYSQL完全手冊 (the Complete Reference)

-MySQL核心技術手冊

-塗抹MySQL 跟著三思一步一步學MySQL

熟練:

-MySQL高效編程

-深入淺出MySQL資料庫開發優化與管理維護

-高性能MySQL(第2/3版).施瓦茨

-深入理解MySQL核心技術

-高可用MySQL_構建健壯的數據中心.查理斯.貝爾

精通:

-MYSQL內核_InnoDB存儲引擎

-MySQL技術內幕 第5版.迪布瓦著

-MySQL技術內幕_InnoDB存儲引擎.第2版

-WILEY_資料庫索引設計與優化


想學習MySql,請問哪種書可以幫助我入門


高性能MySQL以及這本書作者提到的兩本:

索引 資料庫索引設計與優化

存儲過程 MySQL 存儲過程編程

哦 還要官方文檔


入門的話,MySQL教程_w3cschool是個不錯的網站。這裡有很多語法標準。


推薦閱讀:

多線程並發訪問資料庫中不同記錄時應該採用什麼辦法?
什麼情況下,需要使用分散式資料庫?
產品運營,如何做出一份優秀數據報表?
一台普通計算機能承擔伺服器嗎?
如何評判基於中間件的分散式mysql與 雲資料庫?

TAG:資料庫 | 書籍 | MySQL |