迄今為止,數(shù)據(jù)庫的使用是非常普遍的現(xiàn)象,尤其是關(guān)系數(shù)據(jù)庫,90%的互聯(lián)網(wǎng)公司正在使用MySQL。即使出現(xiàn)了諸如Redis和MongoDB之類的新型數(shù)據(jù)庫,它們也無法替代傳統(tǒng)的關(guān)系數(shù)據(jù)庫,因為此類NoSQL數(shù)據(jù)庫僅解決了某種類型的問題,而不是通用數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫MySQL,就是世界的抽象,因此需要數(shù)據(jù)庫程序員需要具備很多基本知識。那么數(shù)據(jù)庫程序員掌握的基本知識有哪些?數(shù)據(jù)庫程序員的日常工作是什么?
數(shù)據(jù)庫程序員掌握的基本知識有哪些?
從數(shù)據(jù)庫的操作角度而言,SQL語句才是基礎(chǔ)中的基礎(chǔ)。DBA 一方面要根據(jù)需求在數(shù)據(jù)庫中實現(xiàn)某些功能,另一方面要指導(dǎo)非數(shù)據(jù)庫專業(yè)人士在數(shù)據(jù)庫中完成他們想要實現(xiàn)的功能,所以,關(guān)于數(shù)據(jù)庫中很多細(xì)節(jié)性的東西都需要DBA去掌握。
另外,需要了解數(shù)據(jù)庫架構(gòu)方面的知識,掌握SQL底層的一些知識。例如,一般學(xué)過數(shù)據(jù)庫的人都知道索引對提高查詢性能十分重要,但卻不知道過多的索引也會給數(shù)據(jù)的處理帶來負(fù)擔(dān)。如果不了解索引的內(nèi)部實現(xiàn)機制以及SQL使用索引的原理,那么就無法合理地創(chuàng)建索引。
在實現(xiàn)了用戶的需求后,接下來的工作就是維護(hù)。再好的數(shù)據(jù)庫架構(gòu),也需要經(jīng)常被維護(hù)和保養(yǎng)。例如,原來很有效的索引因為索引碎片的增多,讀取的性能就會下降;因為業(yè)務(wù)的變化,有的索引被刪除了,那么如何保證重要的數(shù)據(jù)不會丟失,敏感的數(shù)據(jù)不會被不該訪問的人訪問。這一系列的問題,除了要調(diào)查、分析,并制訂出一套完整的方案外,還需要相關(guān)的知識來實施這套方案。日常維護(hù)的過程中會遇到非常多的問題,這些問題除了SQL的問題外,很多是跟系統(tǒng)或者網(wǎng)絡(luò)相關(guān)的,甚至是程序中出現(xiàn)的問題需要調(diào)試。所以,對于一名優(yōu)秀的DBA而言,操作系統(tǒng)、計算機網(wǎng)絡(luò)與通信、程序設(shè)計語言等相關(guān)知識都需要有所涉獵。
為了管理好數(shù)據(jù)庫,特別是管理好多臺服務(wù)器,DBA有時也需要編寫工具來輔助完成任務(wù)。所以,懂Shell或Python也是必不可少的。
通過上面的分析,可以得出DBA需要的技能如下:
1.數(shù)據(jù)庫知識熟練掌握,包括SQL語言、備份、恢復(fù)、管理、數(shù)據(jù)庫結(jié)構(gòu)知識、數(shù)據(jù)庫運行原理。
2.至少熟練掌握一種數(shù)據(jù)庫,了解其他數(shù)據(jù)庫。很少有不與其他類型數(shù)據(jù)庫交互的數(shù)據(jù)庫,如果只熟練掌握一種數(shù)據(jù)庫,那么當(dāng)需要與其他數(shù)據(jù)庫交互時,就會無從下手。
3.綜合能力(有一定的應(yīng)用能力)。有一定的程序設(shè)計能力,包括操作系統(tǒng)、網(wǎng)絡(luò)與安全等知識。
數(shù)據(jù)庫程序員的日常工作是什么?
1.實時監(jiān)控數(shù)據(jù)庫告警日志
對于數(shù)據(jù)庫程序員來說,實時地監(jiān)控數(shù)據(jù)庫的告警日志是必須進(jìn)行的工作,監(jiān)控并且應(yīng)該根據(jù)不同的告警級別,發(fā)送不同級別的告警信息,這有助于及時了解數(shù)據(jù)庫的變化與異常,及時響應(yīng)并介入處理。
2.實時監(jiān)控數(shù)據(jù)庫的重要統(tǒng)計信息和等待事件
實時監(jiān)控對于數(shù)據(jù)庫的運行至關(guān)重要。要高度關(guān)注那些能夠代表數(shù)據(jù)庫重要變化的統(tǒng)計信息,并且據(jù)此發(fā)送告警信息。監(jiān)控哪些統(tǒng)計信息應(yīng)當(dāng)根據(jù)不同的環(huán)境來區(qū)別對待,對于單機、RAC環(huán)境等各不 相同。
3.部署自動的AWR報告生成機制
每天要檢查前一天的AWR報告(AWR報告是Oracle10g下提供的一種性能收集和分析工具,它能提供一個時間段內(nèi)整個系統(tǒng)資源使用情況的報告,通過這個報告,就可以了解一個系統(tǒng)的整體運行情況,這就像一個人的全面的體檢報告),熟悉數(shù)據(jù)庫的運行狀況,做到對數(shù)據(jù)庫了如指掌。
4.每天至少了解或熟悉一個TopSQL
根據(jù)AWR報告,每天至少了解或熟悉一個TopSQL,能優(yōu)化的要提出優(yōu)化和調(diào)整建議。一個數(shù)據(jù)庫程序員應(yīng)當(dāng)對穩(wěn)定系統(tǒng)中的SQL非常熟悉和了解,這樣才可能在系統(tǒng)出現(xiàn)性能問題時快速地作出判斷和響應(yīng)。
5.部署完善的監(jiān)控系統(tǒng),并對重要信息進(jìn)行采樣
數(shù)據(jù)庫程序員應(yīng)該對數(shù)據(jù)庫部署完善的監(jiān)控系統(tǒng),并對重要信息進(jìn)行采樣,能夠?qū)崟r或定期生成數(shù)據(jù)庫重要指標(biāo)的曲線圖,展現(xiàn)數(shù)據(jù)庫的運行趨勢。
6.全面深入地了解應(yīng)用架構(gòu)
對于一名數(shù)據(jù)庫程序員而言,一定要深入了解應(yīng)用。在數(shù)據(jù)庫本身變得更加自動化和簡化之后,未來的數(shù)據(jù)庫程序員應(yīng)該不斷走向前端,加深對于應(yīng)用的了解,從應(yīng)用角度對數(shù)據(jù)庫及全局進(jìn)行把握和優(yōu)化。
7.撰寫系統(tǒng)架構(gòu)、現(xiàn)狀、調(diào)整備忘錄
根據(jù)對數(shù)據(jù)庫的研究和了解,不斷記錄數(shù)據(jù)庫的狀況,撰寫數(shù)據(jù)庫架構(gòu)、現(xiàn)狀及調(diào)整備忘錄,不放過任何可能的優(yōu)化與改進(jìn)的機會。
當(dāng)然,數(shù)據(jù)庫程序員的工作內(nèi)容遠(yuǎn)不止上面列出的這幾點,像數(shù)據(jù)庫安裝、數(shù)據(jù)庫備份、數(shù)據(jù)庫恢復(fù)等都屬于數(shù)據(jù)庫程序員的工作內(nèi)容,這里不再詳述。
上述就是關(guān)于數(shù)據(jù)庫程序員掌握的基本知識有哪些,以及數(shù)據(jù)庫程序員的日常工作是什么的全部內(nèi)容介紹,想了解更多關(guān)于數(shù)據(jù)庫的信息,請繼續(xù)關(guān)注中培偉業(yè)。