|
在專職DBA工作一年過一個月以后,開通了CSDN的博客專欄,在第一篇文章中,我談?wù)勔荒闐BA生涯的感想,雖然我是SQL Server的DBA,但是我覺得本文適合所有DBA,順便把這篇文章作為個人真正DBA的開端和指引:
為什么要有DBA?
對于大量小公司,是請不起DBA,而且也不是非常必須的。那么DBA這個職業(yè)是如何產(chǎn)生的?我也不懂,個人的猜測是,當你的應(yīng)用系統(tǒng)和數(shù)據(jù)庫到達一定程度,就會面臨很多問題,專業(yè)術(shù)語稱之為:瓶頸。
面對瓶頸,很多有經(jīng)驗的開發(fā)人員或者其他崗位的人,可以應(yīng)付,但不能保證都能應(yīng)付,或者很好地解決,往往都只是治標不治本。因此,需要一個專職人員負責這部分工作。類似于系統(tǒng)管理員。試想你的公司有100臺服務(wù)器,上面有若干個操作系統(tǒng)(虛擬機可能會導致更多數(shù)量)。一個開發(fā)人員面對無休止的開發(fā)進度,就算有心,也無力。
對于具有一定規(guī)模的企業(yè),擁有一定數(shù)量的DBA和系統(tǒng)管理員是非常必要的。這能保證你的企業(yè)正常運作的前提下,達到各方面的最優(yōu)化。
何為DBA?
畢業(yè)4年,做了3年開發(fā),1年DBA,萌生成為DBA是在第二年末,看到DBA的前景比較好(有些地方把DBA描述成中醫(yī),年紀越大越值錢,其實很有道理,經(jīng)驗的確需要時間和經(jīng)歷去積累),工資也相對高很多,并且在公司的地位也相對比開發(fā)人員高。加上個人開發(fā)水平不高,所以最終決定轉(zhuǎn)型為DBA,當時何為DBA?如何成為DBA?這些都還沒弄懂。
后來,經(jīng)過自己的堅持,終于當上了一個專職的DBA,從此開始自己的職業(yè)生涯。成為了DBA,面對的第一個問題就是:什么是DBA?其實就是說,要做些什么,才算一個DBA。
DBA,中文:數(shù)據(jù)庫管理員,如其名,管理數(shù)據(jù)庫的人,但是僅僅這樣分析是不全面的,因為數(shù)據(jù)庫作為信息系統(tǒng)的核心,有著無法比擬的重要性。我的上司說過,DBA和系統(tǒng)管理員才是公司的核心,程序沒了,上傳一份就可以了,服務(wù)器掛了,重裝系統(tǒng)甚至買過硬件,也可以解決,但是數(shù)據(jù)庫沒了(其實就是數(shù)據(jù)沒了),對產(chǎn)品提供商或者客戶,都是毀滅性的打擊。不是每類數(shù)據(jù)都能重現(xiàn)或者重建。
所以,作為DBA
首先,要有過硬的數(shù)據(jù)庫知識,包括管理、設(shè)計、開發(fā)等等。
其次,要懂得足夠多的或者說最起碼的服務(wù)器管理知識,操作系統(tǒng)知識,因為你的數(shù)據(jù)庫管理系統(tǒng)是運行在操作系統(tǒng)上的。
再者,由于絕大部分數(shù)據(jù)庫系統(tǒng)都配有前端應(yīng)用程序,所以必要的程序語言要達到最起碼的了解級別。
還有,無論是外網(wǎng)還是內(nèi)網(wǎng)系統(tǒng),只要預算不會非常缺,一般數(shù)據(jù)庫服務(wù)器不應(yīng)該存放任何其他應(yīng)用。這種情況下,往往都是通過網(wǎng)絡(luò)傳輸來實現(xiàn)整個系統(tǒng)的應(yīng)用和管理,所以網(wǎng)絡(luò)知識也是必要的。
最后,DBA不僅僅要和硬件、代碼打交道,也要和人打交道,試想如果你不懂得如何告訴開發(fā)人員某些功能存在問題,或者你不懂得如何向領(lǐng)導匯報,那么你的工作就會事倍功半,甚至有反效果。
能滿足上面五點要求,你可以稱自己為“初級DBA”。至于中級、高級,那些的要求就很苛刻了。在此先不談。
在我個人的工作經(jīng)驗看來,DBA的工作粗略分為兩種:【管理】和【優(yōu)化】。當然,這兩部分相輔相成又互相制約,不應(yīng)該獨立看待。
對于【管理】:
首先,當然要讓服務(wù)器穩(wěn)定、安全地運行。并且保證各方面的配置都能達到局部最優(yōu)化。這里之所以說局部,是因為根據(jù)我的經(jīng)驗,沒有一成不變的教條,也沒有所謂的絕對最優(yōu),只有最合適的方案。所以不要對一個執(zhí)行幾乎不花時間的查詢花大力氣的優(yōu)化,除非你發(fā)現(xiàn)這個查詢具有重大隱患。光是穩(wěn)定和安全就已經(jīng)有非常多的學問,將在后續(xù)穿插講解,另外,這兩點你要盡可能地向系統(tǒng)管理員學習。不求你有他們的等級,但是要盡可能接近,畢竟他們只需要關(guān)系服務(wù)器和操作系統(tǒng),你除了這些之外還要關(guān)心數(shù)據(jù)庫。
然后,要充分利用好現(xiàn)有資源,除了政府和銀行這些企業(yè)之外,一般的企業(yè)就算再大,預算也是有限的,而且對于不懂計算機的人來說,可能覺得服務(wù)器、軟件等等都只是支出而不是收入,所以往往都看的比較輕。絕大部分DBA都必須面臨有限的資源。但是往往這就是你發(fā)揮的地方。很多開發(fā)人員不重視性能,總是寫一些“能用”的功能,最后往往因為資源不足而運行失敗。作為DBA,要把這些程序優(yōu)化,使其達到一個【少】字,這部分放到優(yōu)化說。
最后,要做好應(yīng)急措施,往往問題就在你以為不會發(fā)生的時候發(fā)生。所以DBA首要任務(wù)是做好數(shù)據(jù)庫的備份(包括系統(tǒng)數(shù)據(jù)庫)。然后就是做高可用,使得數(shù)據(jù)庫能盡可能地保持不停機運作。然后就是做好一些自動化操作,比如自動、定期重建索引、清理備份文件等等。如果要細化DBA的工作事項,恐怕一萬字都遠遠不夠。所以這里僅僅是帶過一下,后續(xù)也會穿插闡述。
對于【優(yōu)化】:這是一個大課堂,足以寫好幾本書,而且也是基于【管理】部分。數(shù)據(jù)庫管理不好,你代碼質(zhì)量再好,也是白搭。所以以下提到的是必須做到的:
首先,要有良好的編程規(guī)范,比如命名、注釋,這些必須強制實行,曾經(jīng)看過一篇文章,說維護人員經(jīng)常要花70%的時間都去讀一些沒有注釋的代碼。剩下的時間才去做優(yōu)化,試想作為企業(yè),這些成本是不可忽視的。
其次,結(jié)合【管理】部分,做好日常的維護及性能數(shù)據(jù)收集,任何一本好的優(yōu)化書籍都會叫你先定好性能基線,一般就是正常運行的系統(tǒng)一些硬件數(shù)據(jù)。比如CPU、內(nèi)存和I/O值。有了這些,你才有理據(jù)去告訴別人,你優(yōu)化了。讓數(shù)據(jù)說話更有說服力。
然后,做好技術(shù)儲備,前面提到的,要有扎實的編程基礎(chǔ),在這里就能體現(xiàn),一個不會SQL編程的人或者不懂存儲過程是什么的人,如何去優(yōu)化?畢竟優(yōu)化大部分情況下是改寫寫法和調(diào)整索引、表結(jié)構(gòu)等等。
再有,優(yōu)化要有一定的原則,大拇指定律指出,80%的性能問題是由于20%的程序引起的,所以要針對這20%的程序做優(yōu)化,并且優(yōu)化的時候不要做到極端,卻要做到極致,一個查詢從2分鐘降到1秒鐘,其實你優(yōu)化的空間已經(jīng)不大了,基本上可以提交結(jié)果了。
最后,要經(jīng)常總結(jié),把經(jīng)驗分享給開發(fā)人員,知識在你大腦里面,誰都搶不走,不應(yīng)該害怕被別人替代,因為如果有天你面臨這個處境,只能說明兩種情況:1、領(lǐng)導故意找接班人,這樣的公司你不留也罷。2、你的水平的確比不上別人,你應(yīng)該多學習,而不是去埋怨。分享的過程中,你也許會被指出很多不足,這也是你成長的另外一個動力。
DBA應(yīng)該怎么做:
作為DBA甚至作為一個人,首先你要保證自己不斷進步,其實說白了就是不斷學習,實踐,再學習,再實踐。
比較好的方式就是看書,目前我手上有不下50本書,包括電子書和實體書,我也在不斷收集一些DBA的書籍,有時候看著這些書名,卻有一種不知如何選擇的感覺。后來工作需要,挑了一些能快速解決問題的書或者文章來看(當然如果有時間,我還是強烈建議打好基礎(chǔ)),發(fā)現(xiàn)了絕大部分書籍和資料,其實描述的都是大同小異,只是側(cè)重點不同,甚至有些是標新立異而已。所以,選擇一些好的書籍,對入門很有幫助。如何入門?其實我也不好說啥,看個人,但是如果非要說一個方法,那我建議去考證。每個主流DBMS的廠商幾乎都有相關(guān)的證書,從考證的過程,你可以看到廠商希望專業(yè)的使用者應(yīng)該具有什么水平,從中你可以得到一個大概,然后再深入了解。不要因為證書而讀書,那個只是你的一個指引,后面的路還長著。
在不斷學習的過程中,要反復測試和驗證,陸游的【冬夜讀書示子聿】上的一句名言:紙上得來終覺淺,絕知此事要躬行。書上往往都是別人的經(jīng)驗,會有意無意略掉一些細節(jié),只有實踐了,你才會發(fā)現(xiàn),知識也才會扎根你的大腦。而且書上的知識往往都是最后化了,很少出現(xiàn)問題,但是實際運用中,往往問題百出。
最后,要有好的心態(tài),個人覺得,DBA最重要的不是技術(shù),而是冷靜,因為在幾乎所有人眼里,數(shù)據(jù)庫的問題你才是專家,你才能解決,你是別人的依靠。此時,一旦問題突然出現(xiàn),你要先冷靜,沒有冷靜的大腦,很多簡單的問題卻會復雜化。結(jié)果往往事倍功半甚至失敗。有了冷靜的性格,還要謙虛,無論是任何職業(yè),總有你的前輩在,為此,要不恥下問。當你成為大牛了。你就明白為什么了。
本來有很多話說,但是萬言文往往效果不佳,所以我以一圖結(jié)束我的文章,在往后的文章里面,我會穿插闡述DBA的觀點,當然,純屬個人經(jīng)驗:
其實本文沒怎么經(jīng)過深思熟慮,只是一時興起就寫了。所以有不足之后多多保函,并建議指出。謝謝。
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。