運維知識是怎麼構建起來的
DBA都比較羨慕那些老鳥,他們看看日誌檔案,查幾個指標,看兩份AWR報告就能大致推斷出資料庫的問題到底出在什麼地方。心嚮往之的同時,也在想我什麼時候也能達到這樣的水平,我需要怎麼學習才能達到這樣的水平。實際上這世上並無捷徑,每個老鳥都是從菜鳥開始成長起來的 。每一次故障處置,每一次去現場的機會,每一次在網上和別人討論一個案例,都是向老鳥前進一步的機會。如果你半夜接到老闆的電話,讓你去現場處置一個緊急故障,你覺得不公平,為啥叫我去,不讓其他人去,那麼你很可能就失去了一次鍛鍊自己的機會。年輕人吃點苦不怕,怕的就是到了30多歲才發現自己這些年太荒廢了。大多數成功的老鳥都是比較勤奮的,在這年裡,我還沒有遇到過平時很懶,但是水平極高的高手。
勤奮只是一個必要條件,並不代表充分條件,僅僅勤奮是不夠的,善於總結更為重要。有可能你已經半夜加了不少班了,但是你不去總結,僅僅是機械的重複老鳥教給你的那幾招技巧,那麼你很難有大的長進。運維知識的積累往往和總結密不可分,如果你只是不斷的幹苦活累活,並沒有去做必要的總結,也沒有人指點你如何去總結。那麼可能你幹了一輩子還是在一個較低的水平上徘徊。
你看到上面的等待事件會意識到什麼?你需要怎麼去進一步分析問題。要想分析這些問題,你需要在自己的腦子裡構建出Oracle等待事件的知識圖譜,大概每個等待事件的含義是什麼,可能受什麼影響,可能會影響到下游的哪些方面,產生什麼樣的後果。這個例子中,我們可以得到以下的結論:
佔比最高的是direct path read temp/direct path write temp,這兩個等待事件應該是關聯的;
CPU TIME大致是SQL執行的開銷,這個系統中CPU使用率很高,不過CPU TIME很小,大機率是SQL都比較小,沒有複雜的消耗很大SQL;
log file sync和REDO的併發量有關,本系統中的事務併發量不大,REDO量也不大,延時有點高,可能配置上存在一些問題,不過不是主要問題;
latch:cache buffer chains等待與DB CACHE爭用或者熱塊爭用有關。佔比不高,可能和熱塊衝突有關。
有經驗的DBA對於常見的等待事件在腦子裡會有一個類似知識圖譜的東西,比如上游什麼事件會引發下游什麼事件。比如對於排名最靠前的等待事件direct path read temp/direct path write temp,腦子裡的這個區域性的知識圖譜是這樣的:
如果上游的圖譜識別得不完整,只看到了HASH JOIN和SMJ,沒有SORT,那麼分析下去就有可能出現偏差。如果識別錯了,把direct path read和direct path read temp搞混了,那就更麻煩了。
這是一個十分容易出現的認知偏差,有時候一馬虎就忽略了temp這個詞了,有些人對這個知識點了解得一知半解,也會存在錯誤認知,從而在分析問題的起點就發生偏差,最終導致無法準確定位問題。
如果我們使用了正確的知識圖譜,那麼下面就很容易找到驗證問題的方法,看看臨時表空間訪問的效率,看看PGA命中率是不是很低,看看M-PASS排序都是什麼樣的大小。
這時候可能有點經驗的DBA都能看出,這個問題應該是PGA引數設定不合理導致的。對於有經驗的DBA來說,定位這個問題耗時幾分鐘就可以完成了,因為在腦子裡有這個知識圖譜存在。如果腦子裡沒有知識圖譜,那麼定位這個問題就需要去MOS上找相關案例,然後進行比對才能完成。
完成這個思考的圖譜如上,實際上這張圖可能更大,如果問題表現不同,可能會涉及更為廣泛的知識圖譜。大家可以看出,這種圖是畫不完的,因為知識體系十分龐大,甚至超過人腦可記憶思考的範圍。人的腦子裡的知識圖譜也不是這麼構造的,是透過長時間一點一滴積累的。是人的大腦自動把這些支離破碎的知識拼湊在一起的。有些時候這些知識點都在人的腦子裡存在,只是沒能把這些知識點之間的關係構建起來,那麼在思考問題的時候,就無法十分流暢地進行推理了。
因此積累點狀知識的同時,也要注意對知識的理解和梳理,只有打通了任督二脈,才能讓真氣運用自如。知識不能運用自如,就會像段譽使用六脈神劍一樣時有時無,思路順暢的時候行雲流水,而下一回好像遇到了堰塞湖。這種情況一般都是因為你沒有打通一些知識點之間的聯絡,沒有把知識圖譜梳理清晰。
梳理知識的比較好的方法是定時整理,而寫文章是最好的整理方式,特別是寫給別人看的文章,那麼在寫的過程中往往還要去做知識驗證,否則寫錯了,就會貽笑大方了。因此寫文章發部落格、公眾號是更好地梳理知識的方法。公眾的監督會讓你把這件事做得更好,因此我一般會建議年輕人多寫寫文章。在《DBA的思想天空》的序言中我也曾寫過,我真正的梳理Oracle的知識是從想模仿《DELPHI深度歷險》寫一本名字叫《Oracle深度歷險》的書,最後因為那時候對Oracle的理解還比較粗淺,書寫得不成功,但是透過寫書,把Oracle知識的任督二脈打通了。
雖然知識體系是一個龐大的網路,因此我偏好用知識圖譜來描述。不過我們無法直接構建一張大而全的知識圖譜來描述這些知識,只能以點狀來學習和記錄知識。龐大的知識圖譜對於人來說也很難駕馭,思考問題的時候雖然會自動使用這些知識,但是人的算力總是有限的,而計算機系統在圖處理方面的能力要遠高於人腦,因此把這些知識放到圖資料庫裡,透過圖演算法來處理這些知識會有更高的效率。這也是這些年我把手頭的工作全部放下,全身心投入到運維知識圖譜的構建工作中的主要原因。
不過這項工作並不好做,個人的能力總有窮時,必須集大家之智來做這件事才更為靠譜,不過目前我並沒有找到一個更好的辦法來集眾之力,完成這一工作,只能先做起來再說了。
來自 “ 白鱔的洞穴 ”, 原文作者:白鱔;原文連結:https://mp.weixin.qq.com/s/xaNAQIWV8XqYay7xeFE3jQ,如有侵權,請聯絡管理員刪除。
相關文章
- 【知識分享】什麼是IT運維管理服務運維
- 【IT運維小知識】安全組是什麼意思?運維
- 什麼是運維?怎樣快速做好運維工作?運維
- HTTP請求報文有哪些組成部分?linux運維運維知識怎麼樣HTTPLinux運維
- 、web前端的這麼知識應該是怎樣的一個知識體系架構?Web前端架構
- 【IT運維小知識】虛擬化vCenter是什麼意思?有啥優勢?運維
- linux運維需要掌握什麼知識?linux運維學習路線Linux運維
- linux運維學習路線,linux運維需要掌握什麼知識?Linux運維
- 智慧運維基礎-運維知識庫之ETL運維
- 產品經理的知識結構是什麼
- 運維告警管理困難重重,我是怎麼做到的運維
- 冷知識:你知道每個視窗都有的 [x] 是怎麼來的嗎?
- 運維的未來是平臺工程運維
- 《快學 Go 語言》第 8 課 —— 程式大廈是如何構建起來的Go
- Elasticsearch叢集運維相關知識Elasticsearch運維
- Heartbeat基礎知識-運維小結運維
- 運維需要掌握的12個路由知識點運維路由
- 50%運維都迷糊的Socket基礎知識!運維
- 什麼是知識
- 什麼是運維高手的境界?運維
- 【知識分享】伺服器硬體該怎麼維護伺服器
- Keepalived基礎知識-運維小結運維
- 知識付費與線上教育的區別是什麼?知識付費系統是如何發展起來的?
- 指標是構築自動化運維與智慧化運維的基石指標運維
- 全面的MySQL基礎運維知識點(一)MySql運維
- 全面的MySQL基礎運維知識點(三)MySql運維
- 全面的MySQL基礎運維知識點(二)MySql運維
- 如何高效學習linux運維知識?linux運維有發展嗎Linux運維
- 平均尋道時間用途是什麼?Linux運維怎麼學Linux運維
- Linux介面是怎樣的?入門Linux運維學什麼Linux運維
- 什麼是IT運維管理服務運維
- 什麼是大型網站運維網站運維
- 【知識圖譜】 一個有效的知識圖譜是如何構建的?
- 漲知識:微信是怎麼把地圖“甩”到賓士上的地圖
- 運維工程師核心工作是什麼?用什麼運維工具好?運維工程師
- Linux運維之路怎麼走?Linux運維
- 運維必知必會的監控知識體系全梳理總結運維
- linux是用來幹嘛的?Linux運維平時都做什麼Linux運維