前言
如何“系統”學習mysql?比如需要看哪些書籍,哪些資料?我曾研讀過以下幾本書:《高效能mysql》,簡朝陽的mysql最佳化,innodb儲存引擎。我個人感覺前兩本是告訴讀者知其然,第三本是告訴讀者所以然。這三本書是有一種漸進的關係的,如果沒有前兩本的積累和一定的工作經驗,直接看第三本的效果是不太好的。
學習資料庫知識,或者狹義說學習mysql,其學習過程比較曲折,沒人誰能告訴你,只要看過某幾本書,掌握好哪些知識就算是精通、掌握mysql了。知識面是非常廣,知識點是零散的,不像學習程式語言那麼系統、那麼直接明瞭。這也是我感覺比較迷茫的地方,怎樣才能系統學習?現在我工作之餘有空就在閱讀英文版的官方參考手冊,一則培養看英文技術文件的能力,二則希望透過官方文件來系統學習,不希望只通過一兩篇技術文件、一兩個案例這樣零散的學習方式。
MySQL學習的技巧以及經驗1.系統學習資料庫,最要緊的是把基本功打牢,所以《資料庫系統概念 原書第六版》是一本不可多得的好書,任何資料庫背後的原理基本上都是想通的,其他的都是不同廠商或組織做的改進和最佳化;
2.如果對MySQL題體系結構、原理性的東西沒搞明白,就閱讀最佳化相關的書,我覺得是徒勞,因為原理不懂,何談最佳化?所以這裡可以推薦兩本本書籍:《深入理解MySQL》(人民郵件出版社 Charles A Bell著 楊濤等譯)、《深入理解MySQL核心技術》(O'REILLY出版社 中國電力出版社 Sasha Pachev著 李芳等譯);
3.對原理性的東西弄徹底後,再加上足夠多的操練,現在可以看些最佳化、高可用、備份與恢復、叢集、最佳化的書,比如前輩提到的《高效能MySQL》(O'REILLY出版社 電子工業出版社 Baron Schwartz等著 王小東等譯)、《MySQL效能調優與架構設計》(簡朝陽),其他的書籍比如《高可用MySQL——構建健壯的資料中心》(O'REILLY出版社 電子工業出版社 Charles Bell等著 寧青等譯)……(歡迎補充)
4.再深層次可以研究下MySQL原始碼,內部實現機制等等。這裡我也不知路向;
5.Linux方面的知識想必前輩已經非常熟練,在此不贅述。
如何理解高階MySQL DBA必備素養以及技能
現在有人認為學oracle很有出路,有人認為學mysql前途更大,還有人覺得nosql才是未來的資料庫趨勢,您是怎麼看待這樣的觀點?有關關係型資料庫和非關係型資料庫的爭議,您又怎麼看?
我學習oracle的時候oracle資料庫還為廣泛應用,DBA也比較少,算是懵懂的在正確的時間進了正確的門。2001年到2006年真的是DBA學習成長的黃金時期,那時候湧現了一堆有影響力的人。這不是說現在的oracle DBA技能就比那時候的差,而是現在的確算不上黃金時期了,因為oracle已經廣泛應用了。但是現在這個時段就是做資料庫服務的好時期,而我們那時候想做卻不成氣候。
2006年的時候我招了個應屆生叫簡朝陽,後來我建議他重點學習mysql,並給予了很大的自由度和計劃到他,幫助他成長,後來他寫了本書,同時自己成長的非常快,在mysql領域也是非常有影響力。當時之所以建議他學習mysql,是因為oracle的硬體實施整體成本非常高,一用上小型機和SAN儲存,oracle費用其實不足total費用的20%。一方面為了公司節約成本考慮,另一方面也感覺到這是未來的趨勢,大環境給予了他這個機遇,而我只是提前做出了判斷並引導了他。
現在由於網際網路企業的發展,好像nosql發展的迅猛,這其實不過是在特定場景解決特定問題罷了。我認為未來十年nosql可以取代RDBMS是個偽命題,其實發展到後來兩者趨勢逐漸一致,nosql想要通用也得具有RDBMS的很多特徵,就越長越像了。Google最近出的資料庫,其實我看很多特點和概念也類似oracle呢,概念上大家都沒什麼新鮮玩意,都是在規模上的量變導致質變。而一般使用者解決規模問題最簡單的是硬體、網路的突破,這更容易帶來資料庫應用的發展。
所以我更主張大家透過現象去看技術的實質,研究各種技術的特點背後的優劣到底是怎麼回事,這樣才有自己的看法。Oracle、mysql、nosql都是一些具體的資料管理的表現形式,他們主要面對什麼客戶、解決什麼問題、帶來什麼價值,看透了這些,我們就不會被表象所牽引。當然,我認為管理好資料之後,發掘資料價值是一個很重要的事情。
MYSQL 重要引數的作用包括副作用哪些呢?
是key_buffer_size、tmp_table_size、sort_buffer_size、innodb_buffer_size、innodb_log_file_size、innodb_flush_logs_at_trx_commit、max_tmp_tables 等等!SHELL,要熟練; shell具體指的是啥,能否舉例說明一本書籍,說搞懂了這本書籍,shell就算熟練了?
PYTHON , PERL 懂一種。 不懂,看來還得去買一本書,慢慢修煉了。
效能測試要會; 沒有弄過,如何做,用啥工具,如何看測試過後的各種測試資料。
LINUX 熟練操作; linux操作都包括哪些方面呢?能舉幾個例子說明一下嗎?
MySQL入門必看入門要讓初學者看懂才是最重要的,而不是整那些高大上的東西。為了幫助剛畢業找工作,或者想轉行成為資料分析師工作的朋友,我會用下面內容教會你怎樣用最快速、最容易理解的方式學會資料庫和SQL,並使用SQL進行資料分析。為了更多小夥伴可以清晰瞭解mysql中的核心知識點,小編這裡總結了一份詳細的思維導圖。需要領取原圖的話可以轉發文章 私信【MySQL】領取哦!
1.入門2.簡單查詢3.彙總分析4.複雜查詢5.多表查詢6.求職面試題7.檢驗SQL的學習效果
第一部分:入門學習以下內容:
1)瞭解資料庫的基本概念
2)如何安裝資料庫?
第二部分:簡單查詢學習以下內容:
1)基本的查詢語句
2) 如何指定查詢條件?
3)註釋和 SQL 語句注意事項
4)學會運算子指定複雜的查詢條件
5)字串模糊查詢
第三部分:彙總分析學習以下內容:
1)如何進行彙總分析?
2)如何對資料分組?
3)如何對分組結果指定條件?
4)用 SQL 解決業務問題的套路是什麼?
5)如何對查詢結果排序?
6)如何看懂 SQL 報錯資訊?
第四部分:複雜查詢學習以下內容:
1)檢視(什麼是檢視,如何使用,有什麼用,注意事項)
2)子查詢、標量子查詢、關聯子查詢
3)各種常用函式
第五部分:多表查詢在有多張表的情況下,表和表之間的運算和聯絡就變得很重要,這部分學習多個表如何查詢:
1)表的加法
2)聯結,包括交叉聯結、內聯結、左聯結、右聯結、全聯結
3)一張圖記住各種聯結
4)聯結應用案例
5)case表示式
第六部分:求職面試題MySQL核心技術點必須要搞懂!
書中自有黃金屋!1.MySQL技術內幕:InnoDB儲存引擎學習MySQL的使用,首推姜承堯的《MySQL技術內幕:InnoDB儲存引擎》,這本書確實做到了由漸入深、深入淺出,是中國人寫的最讚的MySQL技術書籍,符合國人的思維方式和閱讀習慣,而且,這本書簡直就是面試寶典,對於近期有求職MySQL相關崗位的朋友,可以認真閱讀,對找工作有很大的幫助。當然,也有人說這本書入門難度較大,這個就自己取捨了,個人建議就以這本書入門即可,有不懂的地方可以求助官方手冊和google。
2.MySQL的官方手冊我剛開始學習MySQL的時候誤區就是,沒有好好閱讀MySQL的官方手冊。例如,我剛開始很難理解InnoDB的鎖,尤其是各個情況下如何加鎖,這個問題在我師弟進入百度做DBA時,也困擾了他一陣子,我們兩還討論來討論去,其實,MySQL官方手冊已經寫得清清楚楚,什麼樣的SQL語句加什麼樣的鎖,當然,MySQL的官方手冊非常龐大,一時半會很難看完,建議先看InnoDB相關的部分。
3.MySQL排錯指南《MySQL排錯指南》是2015年夏天引入中國的書籍,這本書可以說是DBA速成指南,介紹的內容其實比較簡單,但是也非常實用,對於DBA這個講究經驗的工種,這本書就是傳授經驗的,可能對有較多工作經驗的DBA來說,這本書基本沒有什麼用,但是,對於剛入職場的新人,或學校裡的學生,這本書會有較大的幫助,非常推薦。
4.高效能MySQL《高效能MySQL》是MySQL領域的經典之作,擁有廣泛的影響力,學習MySQL的朋友都應該有所耳聞,所以我就不作過多介紹,唯一的建議就是仔細看、認真看、多看幾遍,我每次看都會有不小的收穫。這就是一本雖然書很厚,但是需要一頁一頁、一行一行都認真看的書。
5.資料庫索引設計與最佳化如果認真學習完前面幾本書,基本上都已經對MySQL掌握得不錯了,但是,如果不瞭解如何設計一個好的索引,仍然不能成為牛逼的DBA,牛逼的DBA和不牛逼的DBA,一半就是看對索引的掌握情況,《資料庫索引設計與最佳化》就是從普通DBA走向牛逼DBA的捷徑,這本書在淘寶內部非常推崇,但是在中國名氣卻不是很大,很多人不瞭解。這本書也是今年夏天剛有中文版本的,非常值得入手以後跟著練習,雖然知道的人不多,豆瓣上也幾乎沒有什麼評價,但是,強烈推薦、吐血推薦!
6.Effective MySQL系列《Effective MySQL系列》是指:
Effective MySQL Replication Techniques in DepthEffective MySQL之SQL語句最最佳化Effective MySQL之備份與恢復這一系列並不如前面推薦的好,其中,我只看了前兩本,這幾本書只能算是小冊子,如果有時間可以看看,對某一個”模組”進入深入瞭解。
7.MySQL的原始碼關於MySQL原始碼的書非常少,還好現在市面上有兩本不錯的書,而且剛好一本講server層,一本講innodb儲存引擎層,對於學習MySQL原始碼會很有幫助,至少能夠更加快速地瞭解MySQL的原理和宏觀結構,然後再深入細節。此外,還有一些部落格或PPT將得也很不錯,這裡推薦最好的幾份材料。
8 InnoDB - A journey to the core
《InnoDB - A journey to the core》 是MySQL大牛Jeremy Cole寫的PPT,介紹InnoDB的儲存模組,即表空間、區、段、頁的格式、記錄的格式、槽等等。是學習Innodb儲存的最好的材料。感謝Jeremy Cole!
9.深入理解MySQL核心技術《深入理解MySQL核心技術》是第一本關於MySQL原始碼的書,著重介紹了MySQL的Server層,重點介紹了宏觀架構,對於剛開始學習MySQL原始碼的人,相信會有很大的幫助,我在學習MySQL原始碼的過程中,反覆的翻閱了幾遍,這本書剛開始看的時候會很痛苦,但是,對於研究MySQL原始碼,非常有幫助,就看你是否需要,如果沒有研究MySQL原始碼的決心,這本書應該會被唾棄。
10.MySQL核心:InnoDB儲存引擎我們組的同事寫的《MySQL核心:InnoDB儲存引擎》,可能宇宙範圍內這本書就數我學得最認真了,雖然書中有很多編輯錯誤,但是,平心而論,還是寫得非常好的,相對於《深入理解MySQL核心技術》,可讀性更強一些,建議研究Innodb儲存引擎的朋友,可以瞭解一下,先對Innodb有一個宏觀的概念,對大致原理有一個整體的瞭解,然後再深入細節,肯定會比自己從頭開始研究會快很多,這本書可以幫助你事半功倍。
11.MariaDB原理與實現《MariaDB原理與實現》我也買了一本,還不錯,MariaDB講的並不多,重點講了Group Commit、執行緒池和複製的實現,都是MySQL Server層的知識,對MySQL Server層感興趣的可以參考一下。
小編這裡總結了【免費領取MySQL筆記500多頁資料集錦+1000道網際網路大廠Java工程師面試題、spring、mybatis、jvm,Zookeeper,spring】 該資料獲取方式 關注+轉發後,私信我關鍵詞 【MySQL】即可獲取!程式設計的世界永遠向所有熱愛程式設計的人開放,這是一個自由,平等,共享的世界,我始終是這樣堅信的。
部分資料圖片: