小白學MySQL要多久?我整理了10多個問題的答案
這是一個偶然碰到的問題,想想蠻有意思,就準備寫一篇文章做下分析。
首先啰嗦下學習MySQL的一些背景:MySQL作為目前最為活躍熱門的開源數據庫之一,以低成本和簡易操作的組合方案在互聯網企業中被廣泛采用而大放異彩。在炙手可熱的BAT中,MySQL正被大量使用。顯然,對于想在互聯網行業大展手腳的數據庫工程師和DBA們,熟練的MySQL技術無疑是一塊很好的敲門磚。
而在云時代,運維的理念發生了很大改變,隨著數據庫自動化運維智能運維的興起,也促使DBA要站在更高層面來看待數據庫,看待運維,看待IT,否則就會成為被機器人替代的炮灰。
首先我們所理解的小白和實際情況的是不大一樣的,每個人的情況不同,目前我碰到較多的情況,一般以小白自稱的人基本有以下三類:
- 求職儲備(無工作經驗)
沒有相關經驗,還沒有走上工作崗位,只是對于MySQL感興趣或者好奇。
- DBA萌新(較少工作經驗)
剛入行的新手,或者有少量經驗的DBA新人,經常會發現工作中的和書上說的不一樣
- 工作中會用到(有工作經驗)
可能是研發類的同學,有一定工作經驗,工作中要用到MySQL技術,只是簡單用,想深入學習一下
所以針對不同的人群,回答也不盡相同,對此我做了梳理,我覺得可以把這個問題轉換為另外一個問題:
學習MySQL要學些什么,需要注意些什么?
整體來說我會用如下的方式來闡述常見問題
- MySQL學習周期和難度應該怎么理解?
- MySQL知識體系是什么,應該包括哪些知識層面?
- MySQL推薦的書和資料有哪些?
然后其余的部分會分為不同的人群來進行闡述。
1)求職儲備類常見問題
- MySQL的認證考試值得考嗎?含金量有多大?
- 從事DBA崗位,選MySQL還是Oracle?
2)DBA萌新類常見問題
- 從事DBA崗位,選MySQL還是Oracle?
- MySQL DBA高工資的原因
- DBA工程師模型應該是什么樣的?
3)有工作經驗類常見問題
- 個人職業發展如何完成向MySQL的轉型?
小白通用類問題
問題1:MySQL學習周期和難度應該怎么理解
通常對于學習周期和難度,大家是很關心的,但是我們很難去量化一個度,所以我們可以參考比較成熟的商業數據庫作為參考,來對比MySQL學習的一些特點。
從技術棧上來說,MySQL的入門周期相對要短,學習難度要更容易,但是要深入發,因為開源和社區的原因,發展空間則更大。當然除這個維度之外,MySQL DBA的“錢途”從市面需求來說也要好一些。
問題2:MySQL知識體系是什么,應該包括哪些知識層面?
從我的理解中,我把MySQL技術分為了三個層面,運維管理,架構優化和運維開發
運維管理主要就是基礎運維的工作(安裝部署,備份恢復,權限管理之類的工作)和一些變更類管理和規范操作(在線變更,數據庫復制,SQL規范等工作),這部分工作上手較快
架構和優化設計的工作面比較寬,而且技術要求有一定的深度,我把它分為SQL查詢優化,事務和鎖,MySQL集群和高可用技術,分布式數據庫架構等。這部分工作中對于很多開發同學而言更關注查詢優化,而對于DBA從初級走向中高級,則需要關注,相關的鎖機制,和集群,高可用相關技術。
運維開發的工作不是簡單的數據庫自動化運維,而是分為應用層和內核層,我們常說的運維開發是偏向于應用層的,比如數據庫管理工具等,而內核層,比如開發數據庫中間件,SQL審核工具等,需要掌握源碼開發能力。
我的新書里面整理了幾個腦圖,可以作為參考。
其實不管如何改變,MySQL 在人這一塊的一種核心競爭力依舊不變,那就是優化能力。這個優化范疇不單指原來的硬件選型等層面的優化,更多的過渡到了架構設計優化和應用層面的優化。優化能力是DBA職業生涯中的持久生命力,是重新審視自我、提升自我的一個必備武器,優化能力不是短期能夠學成的,而是更多和個人的學習能力和實踐情況緊密結合起來的,簡單來說,和你解決問題的數量呈一定的線性關系。
問題3:MySQL推薦的書和資料有哪些?
簡單來說,官方文檔是最好的學習資料,在這個基礎上去閱讀更多的書籍會起到融會貫通的作用。如果推薦書籍,我有下面的一個讀書清單可供參考。
入門:
《MySQL數據庫應用從入門到精通(第2版)》
《MySQL核心技術手冊》
《MySQL技術內幕(第5版)》
運維實踐:
《高性能MySQL》 經典必讀
《MySQL管理之道:性能調優、高可用與監控(第2版) 》賀春旸
《深入理解MySQL核心技術》帕奇維
《MySQL運維內參》 周彥偉、王竹峰、強昌金
《深入淺出MySQL》網易團隊出品
《MySQL DBA工作筆記》楊建榮
內核:
《MySQL技術內幕:InnoDB存儲引擎(第2版)》姜承堯
《InnoDB - A journey to the core》Jeremy Cole
一.求職儲備類常見問題
問題1:MySQL 的認證考試值得考嗎?含金量有多大?
MySQL的認證目前只有MySQL OCP,目前和Oracle OCP相比,資料和套路都會少一些。考這個認證,你得明白幾件事情:
認證里的內容和工作的內容還是有一些差別的,在MySQL里面尤其如此,因為開源的方案非常多,很多優秀的工具不僅僅是官方的;
考過了認證不一定代表了你是一個數據庫專家,因為實踐出真知,很多技能都是在工作中培養和鍛煉出來的,考試有分數控制,達標即合格,而工作中99%的努力加1%的錯誤那就是失敗;
考取認證不能指望企業給你升職加薪,如果有的話,那么恭喜你;
學習的過程相比考試結果來說,對自己的啟示意義更大,因為拿到認證是對你學習過程的肯定;
最后一點MySQL OCP報名費相比Oracle OCP低不少,價格還算親民。
問題2:從事DBA崗位,選MySQL還是Oracle?
有句話說,選擇的利劍屬于在于能夠揮舞它的人,根據工作需要,自己的喜好去選擇就可以,如果只是本著錢途是不推薦的。如果非要糾結到底是哪一個,其實也可以換個角度,如果兩個都學,是不是這個問題就不是問題了。
二.DBA萌新類常見問題
- 從事DBA崗位,選MySQL還是Oracle?
- MySQL DBA高工資的原因
- DBA工程師模型應該是什么樣的?
問題1:MySQL DBA高工資的原因
因為是和Oracle來對比,可以分為幾個方面來看:
- 首先物以稀為貴,MySQL DBA相對Oracle DBA來說要少一些,隨著現在互聯網行業的發展,這個需求還是會持續增長;
- 第二還是物以稀為貴,任何工種,高級職位都是稀缺的,如果你能夠成為行業內的20%的人,無論你是從事哪種數據庫,都會混得還不錯。
- 第三還是物以稀為貴,什么事物的發展都有一個成熟度曲線,水漲船高之后,留在你手里的是真技能還是花拳繡腿,數據庫的功能會越來越豐富,你的技能也要升級,不升級的話,用哪個數據庫你都會很吃力。
問題2:DBA工程師模型應該是什么樣的?
我眼中的工程師模型是這樣的,簡單三個特征:鷹眼(眼光犀利),獅心(內心強大),繡花手(做事認真細致)。
三.有工作經驗類常見問題
問題1:個人職業發展如何完成向MySQL的轉型?
從自身目前從事的工作,分三種情況來看:
(1)目前從事的工作以商業數據庫Oracle為主,又想轉型為MySQL DBA的:
自搭環境學習實踐是一個起步,如果覺得沒有明確的學習目標,考個MySQL OCP也是一種階段性的學習成果驗收,總比漫無目的的學習收獲要大。已經有了Oracle基礎,可以通過對比的方式來引入到MySQL的學習中。公司如果后期引入MySQL方案,你就是最佳人選了。
(2)目前工作中有MySQL環境的:
在做好本職工作的前提下,可以自薦,讓別人推薦來做MySQL DBA的工作。對企業和你個人都是雙贏,所以開發測試運維同學想做MySQL DBA也是可以的。
(3)現有的MySQL工作和自身期望相比差距較大的:
一種方式是自查,我們在當前的環境還能夠做出些什么,如果能夠把當前的環境做到精細化的管理,總會有非常多的事情和收獲,還有一種方式就是跳槽,這個的前提也是你在儲備了很多的技能之后,因為機會是留給有準備的人。