為什麼DBA需要資料庫廠商的資料庫概念文件
前幾天和一個做國產資料庫的朋友討論文件的問題,他問我最需要什麼文件。我提出了兩個文件《XX資料庫概念手冊》和《XX資料庫完全參考手冊》。
資料庫完全參考手冊的重要性毋庸置疑,當我對資料庫的使用存在問題的時候,就需要翻閱這個文件來查詢答案,而我也一定能在這個文件中找到所需要尋找的答案。可能有些朋友會說了,這有什麼難的,哪個資料庫產品沒有參考手冊啊。確實是的,搞一個名字叫《完全參考手冊》的文件並不難,而難的是寫出一本真正的《完全參考手冊》。完全參考手冊與其他手冊存在交叉引用和交叉參考的地方,一本優秀的完全參考手冊能夠作為其他文件的優秀參考書,也能夠成為知識體系的全面指引。不過我看到過的國產資料庫,目前都沒有這樣的文件提供,哪怕提供了。類似的資料庫參考手冊,裡面的內容也是不完整的,完全當不起“完全參考手冊”中“完全”這兩個字。
另外一本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,如有侵權,請聯絡管理員刪除。
相關文章
- 一個近30年的老DBA希望資料庫廠商提供什麼樣的文件?資料庫
- 資料庫DBA為什麼拒絕DevOps?資料庫dev
- 為什麼我們需要資料庫事務資料庫
- 織夢需要什麼資料庫織夢資料庫在哪資料庫
- 資料庫產業為什麼需要規模效應資料庫產業
- 什麼是資料庫?什麼是雲資料庫?資料庫
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 資料庫的概念資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- 資料庫概念資料庫
- 為什麼需要資料治理
- 資料庫概論 (一)資料庫概念資料庫
- 資料是什麼——資料的倉庫
- PG資料庫為什麼要用autovacuum資料庫
- 如何成為資料庫管理員(DBA)?資料庫
- 資料庫系列:大廠使用資料庫中介軟體解決什麼問題?資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- 為什麼PostgreSQL是最成功的資料庫?SQL資料庫
- 將rac資料庫改為單機資料庫需要修改的引數資料庫
- 資料庫應用需要什麼樣的雲原生能力資料庫
- 為什麼說雲資料庫是商業的成功、技術的倒退?資料庫
- DBA(資料庫管理員)資料庫
- 【資料庫】簡單聊聊資料庫可以做什麼,有什麼用?資料庫
- 【資料庫】雲資料庫rds是什麼意思?有什麼優勢?資料庫
- 為什麼會有這麼多種的資料庫資料庫
- 為什麼你需要更精準的資料?
- 雲資料庫RDS是什麼?雲資料庫RDS有什麼優勢?資料庫
- MySQL資料庫是什麼?linux資料庫運維MySql資料庫Linux運維
- [資料庫]資料庫中為什麼不推薦使用外來鍵約束資料庫
- NoSQL資料庫探討之一 - 為什麼要用非關聯式資料庫?SQL資料庫
- 時序資料庫-01-時序資料庫有哪些?為什麼要使用資料庫
- 資料庫廠商的發展歷史之MySQL資料庫MySql
- 資料庫廠商的發展歷史之Sybase資料庫
- 為什麼NoSQL資料庫這麼受歡迎?SQL資料庫
- 為什麼需要大資料安全分析?大資料
- django用什麼資料庫Django資料庫
- 什麼是皇帝資料庫?資料庫
- 什麼是Cassandra資料庫資料庫