新的時代下還需要感悟資料庫的本質嗎

qing_yun發表於2024-01-12

今天有個朋友在群裡問硬解析、軟解析、軟軟解析、軟軟軟解析怎麼區分。關於這個問題,十多年前是仔細研究過的,不過一些細節現在讓我說,也一下子說不清楚。於是找出《DBA的思想天空》這本書翻了一下。找出幾段發給他了。順便看了看當年我在第一篇《基本原理篇》的篇頭,覺得自己也有所感悟。

被自己十幾年前寫的書教育了一下挺丟人的,說明本人現在的技術比起十幾年前沒有進步,很可能退步了不少。這些年有些脫離一線了,人也浮在半空中,比起十多年前那麼落地的學技術、用技術、泡在使用者現場和各種技術資料裡,一點點的分析資料庫的原理,瞭解資料庫的本質,現在只能算是在混日子。今天摘錄幾段,分享給大家,與大家共勉。

很多朋友都會游泳,那麼我來問一個簡單的問題 :什麼叫做真正地學會了游泳?每個學游泳的人都有這樣的感受,剛剛學習游泳的時候最大的問題是無法浮在水面上 ;經過努力,發現只要手腳按照一定方式滑動,身體放平就能浮在水面上了,這個時候就感覺從不會游泳變成會游泳了。但是這時候你會面臨另外一個問題,就是不會換氣,學會換氣後再往後學習就容易了很多,不過可能我們游上幾十米、百把米就會覺得很累。後來我們發現,原來我們游泳的姿勢還不太標準,而如果我們學會了踩水,遊多遠都不是個問題了,這個時候我們就如魚得水了。學習 Oracle 其實和學習游泳十分類似,剛剛開始的時候,我們處於入門階段,要克服對 Oracle 的恐懼心理,只要我們想學好 Oracle,我們就一定能做到,實際上 Oracle 在入門階段是十分容易的。我們從頭學習 Oracle,學會了安裝資料庫,學會了管理表空間,學會了日常的故障處理。就像我們學游泳的時候剛剛學會換氣一樣,雖然感覺已經掌握了 Oracle 資料庫,但是碰到稍微複雜一些的問題我們還是覺得很難入手。我們能看清楚一些東西,但是感覺還是看不遠。

上面這種情況是每個初學者都會碰到的,學 Oracle 和學游泳一樣,剛開始的時候我們只是學會了游泳的外部表現,學會了像別人一樣划水、換氣,但是並沒有真正掌握游泳的本質。如果要消除初學期的迷茫,我們一定要真正地掌握 Oracle 資料庫的概念,一個 DBA 如果連認真學習 Oracle 的基本概念都不能做到,那麼我覺得他也很難成為一個真正的高手。

這些年我在網上和大家一起討論 Oracle 的問題,也經常有朋友問我,要成為一個優秀的DBA,應該看些什麼書。我給大家推薦的第一本書就是《 Oracle Concepts》,這也是我唯一能夠推薦給所有人的書。這本書確實適合任何一個 DBA 閱讀,無論你是初學者還是已經工作了很多年的高手。只要你沒有認真讀過這本書,你就有必要去讀一遍。

理解 Oracle 的基本原理有助於你用一種十分理性的思維去考慮問題,在處理問題的時候能夠更快地抓住問題的本質。我們大家在從事 DBA 工作的時候,經常會碰到這樣的情形,一個問題困擾了我們很長時間,突然猛地一下,你就抓住了問題的關鍵,然後它就迎刃而解了。而在這之前,我們可能會做過很多嘗試,這些嘗試有些是有序的,有些是無序的,甚至有些只是瞎蒙。

在這種情況下,有時候經驗是幫助不了你的,因為所有根據經驗的分析都已經做完了,並且被證明是無效的。這時,我們就只能根據自己對問題本質的理解去分析,才可能最終解決問題。

事實上,要想像 Oracle 一樣思考,首先就需要了解 Oracle 的本質是什麼,它是怎麼運作的,在運作過程中,哪些地方可能成為瓶頸。這個時候可能就有朋友感到疑惑了 :我們如何瞭解Oracle 內部運作的原理呢?這看似一個不可能完成的任務。確實,在處理有些問題的時候,我們可能要了解 Oracle 很深入的演算法,但是在絕大多數情況下,我們分析問題只需要瞭解一些我們在 Oracle 官方文件中提及的原理性的東西,並不需要深入到演算法和原始碼級別。比如說,如果碰到一個共享池的效能問題,你會馬上聯絡到共享池、庫快取(library cache)、字典快取(rowcache)、CURSOR ,以及相關的一些閂鎖、引數等,在大多數情況下這些就可以支撐你做分析了。

但是必須把這些知識點編織為一張網,而不是一個一個的知識點。對於大多數 DBA 來說,想把這些知識點編織為一張網是比較難的。這需要你花費大量的時間來學習,而很少有一本書能夠從這個角度去介紹知識。因此這種學習會比較困難。在本章,老白將嘗試以這種方式來介紹相關的知識點,幫助大家從知識點升級為一個立體的知識體系。

另外,把知識點融會貫通不是看書就能達到的,要想達到這個目標,必須進行足夠的實踐活動。你只有在把學到的知識應用在實踐中,才可能突破知識孤島,達到新的境界。因此,如果你看完第一部分內容後,有些知識點還感覺無法掌握,這也並不要緊,結合自己碰到的案例思考一下,也許會更有收穫。

現在我們已經進入了一個全新的時代,Oracle已經不是很多DBA今後謀生的主要產品了,我們是否需要像十多年前的DBA一樣去學習這些資料庫技術呢?對於我們這個歲數的人來說,可能不大需要了,再過幾年就該退休了。而對於剛剛入行的年輕DBA們,你們怎麼考慮這個問題呢?

來自 “ 白鱔的洞穴 ”, 原文作者:白鱔;原文連結:https://mp.weixin.qq.com/s/VmNeLSxzmQoYhH_dHmLEgA,如有侵權,請聯絡管理員刪除。

相關文章