為什麼DBA需要資料庫廠商的資料庫概念文件

qing_yun 發表於 2022-07-05
資料庫

前幾天和一個做國產資料庫的朋友討論文件的問題,他問我最需要什麼文件。我提出了兩個文件《XX資料庫概念手冊》和《XX資料庫完全參考手冊》。

為什麼DBA需要資料庫廠商的資料庫概念文件

資料庫完全參考手冊的重要性毋庸置疑,當我對資料庫的使用存在問題的時候,就需要翻閱這個文件來查詢答案,而我也一定能在這個文件中找到所需要尋找的答案。可能有些朋友會說了,這有什麼難的,哪個資料庫產品沒有參考手冊啊。確實是的,搞一個名字叫《完全參考手冊》的文件並不難,而難的是寫出一本真正的《完全參考手冊》。完全參考手冊與其他手冊存在交叉引用和交叉參考的地方,一本優秀的完全參考手冊能夠作為其他文件的優秀參考書,也能夠成為知識體系的全面指引。不過我看到過的國產資料庫,目前都沒有這樣的文件提供,哪怕提供了。類似的資料庫參考手冊,裡面的內容也是不完整的,完全當不起“完全參考手冊”中“完全”這兩個字。

另外一本DBA繼續國產資料庫提供的手冊是《資料庫概念手冊》很多Oracle DBA看到《資料庫概念手冊》的時候,一定會想到《Oracle Concepts》,這本有點追求的DBA一定要閱讀幾遍的官方文件,是我以前給一些剛入門或者想提升能力的DBA推薦的書單裡的第一本書。上星期在微信群裡和網友討論技術問題的時候,有人問我,為什麼我能夠從Oracle的原理入手去分析問題。我說這三十年,O記的很多演算法已經被DBA們研究透了。當時有個朋友覺得不可能,O記怎麼可能公佈自己的核心演算法呢。其實我說的“演算法”是要打引號的,O記確實不可能把具體的演算法公開發布,不過作為運維人員來說,我們不需要了解具體的演算法實現,只需要瞭解一些粗略的演算法就可以了。而這些知識的最初來源就是《Oracle Concepts》這本書。《Oracle概念》把Oracle資料庫的一些基礎概念和演算法原理介紹得十分詳盡,讀者讀完這本書,對Oracle的一些內部機理就有了初步的認知了。以後再去做資料庫運維的時候,就不僅僅限於表象去做分析和處置了,能夠根據Oracle的一些內在機制原理去分析問題,找到問題存在的根因,從而多了一些解決問題的路徑。比如說一個資料庫系統的CPU資源不足,可能大家都會通過SQL優化去解決這些問題,不過如果當前SQL無法優化,或者說開發商需要幾個月才能完成優化,那麼這個時候我們就對這個系統束手無策了嗎?

答案肯定是否定的,在很多時候,我們還可以通過一些其他手段來緩解CPU資源不足,從而暫時解決資料庫存在的問題。比如說如果存在十分嚴重的熱塊衝突,或者資料庫緩衝區的各種閂鎖/輕量級鎖資源/SPINLOCK等出現了問題,如果我們能夠發現這個問題,或者根據資料庫的基本原理找到這些問題點,那麼我們就可以通過調整一些作業系統、資料庫引數,調整共享緩衝區的配置等來緩解這些問題。

這些年傳統企業的資料庫架構受到網際網路企業的很大的影響,企業領導也認為網際網路企業都能做好的事情,我們為什麼做不好。實際上傳統企業在IT系統建設和運維方面與網際網路企業的差距是十分巨大的,完全照搬網際網路企業的工作方法是行不通的。網際網路企業的完善的研發與運維體系使得他們可以把重點放在應用和SQL優化上,用這些優化來解決資料庫存在的問題。而對於某些傳統企業來說這種方法不總是有效的。

前幾天和一個客戶交流的時候,他們說目前他們系統負載最大,經常出現CPU資源不足的資料庫是“業擴計量”業務的資料庫,這個資料庫只有不到5TB,比起這套系統裡最大的資料庫來,只有1/10的庫大小,不過因為業務變更頻繁,業務部門幾乎每天都在搞業務創新和管理創新,幾乎每個星期都有新業務釋出。這就導致DBA找到的TOP SQL被修復的量遠遠趕不上新的爛SQL上線的量。為了確保新業務創新不受影響,不讓爛SQL上線,不讓存在缺陷的應用上線的應用上線合規性檢查,就成為了一個擺設。而那個資料量高達45TB的資料庫,因為業務變更沒那麼頻繁,自從換了全快閃記憶體儲後,就一直比較穩定,不怎麼出問題。

面對Oracle資料庫,因為我們瞭解其大體的概念,因此我們還有除了SQL優化之外的武器可以使用。而面對萬花齊放的國產資料庫,DBA的火力就完全啞火了。我曾經看過開發和DBA之間的爭吵,研發主管十分輕蔑的說:“你們DBA除了能找一堆SQL來讓我們改,還能做點什麼?”。DBA也無奈啊:“你們研發選了這個破資料庫,裡面出了啥問題也沒個地方去分析,我找誰講理去”。

如果我們的國產資料庫廠商能夠提供一本《資料庫概念手冊》,那麼就可以讓DBA有更多的武器去運維資料庫,也可以讓使用者把你的資料庫產品用得更好。這種兩全其美的事情,為什麼資料庫廠商不願意去做呢?在一次我和一個資料庫廠商的交流中,他們也表示了無奈:“我們公司裡能夠完全吃透資料庫原理的人都不多,哪有人力能投入到文件編寫裡啊!”,甚至很多資料庫企業的文件是外包給人力資源外包企業完成的,這些文件的質量都無法保證,更不要說寫出一本講自己資料庫概念的手冊了。

目前的國產資料庫裡,opengauss提供了一本不到一百頁的《特性描述》,裡面的少量的描述可以被用於理解opengauss的一些概念,OceanBase提供了一本十多頁的《瞭解Oceanbase資料庫》,Polardb的《Polardb架構解讀》雖然只有55頁,其質量在國產資料庫裡還算是好的了,覆蓋的面依然過窄。Tidb的《Tidb in Action》中有專門的一個章節《TIDB 原理和特性》,算是國產資料庫裡對原理講的比較清晰的了,不過比起《Oracle Conceps》來,還是差距不小。

最後我還是呼籲一下廣大的國產資料庫廠商,求求你們為我們這些可憐的DBA好好的寫寫手冊資料吧。

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