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