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