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