阿裏雲數據庫CloudDBA智慧解決數據庫性能優化和問題診斷難題
背景
問題診斷(trouble shooting) 和 性能優化(performance tunning) 一直都是數據庫領域的專業問題,需要資深DBA的專業技能才能勝任解決,但這樣的人才是稀缺的,無法及時滿足大部分的企業緊急需求。如果有一款產品能夠在大多數情況下,客戶借助它非常迅速的找出數據庫性能隱患點、排查出問題症結所在,這將無疑是給每個客戶送一位專業DBA,可以大大降低風險和提高效率。
先來分析下為什麼數據庫問題診斷和性能優化會非常難?
第一難:獲取信息難,問題診斷和性能優化都需要依賴於大量的係統數據,甚至是長期的曆史數據,隻有基於完備的信息才能給出準確的解法。架構一套完善的數據庫監控體係,可不是一見易事,信息收集的全麵深入則就更困難了。
第二難:分析信息難,需要多年的經驗才能給出準確的解法,也需要多樣的場景才能覆蓋比較全麵的問題類型。經驗與場景,一不好傳承,二變化較快,三他人理解不易。
第三難:優化手段難,找出問題了,知道怎麼辦了,也並不意味著就能馬上解決問題,甚至有些解法是要深入到數據庫引擎層代碼優化,這可不是一招一夕就能做好的。
CloudDBA優勢
阿裏雲數據庫CloudDBA 是如何全麵解決這三個問題的呢?
完備的性能監控數據
我們當然可以自己搭建監控體係,采用通用開源軟件來搭建,但這都意味著投入成本,同時需要對相應的係統比較了解。有些監控係統還無法滿足特定業務需要,為了滿足場景需要必須要二次開發,企業之間的大量通用重複勞動是肯定存在的。常見的監控如下圖圖一和圖二,圖一是主動拉取監控信息方式,圖二是由agent定期上報監控信息形式,一般圖二架構也可以是圖一基礎上增加agent部分。
阿裏雲數據庫監控體係要更深一步,監控內容麵更廣,這就要得益於多年阿裏雲數據庫團隊鍥而不舍對技術的追求。同時監控手段更先進,內核團隊針對監控係統特別優化,我們可以獲取完整的數據庫執行語句詳情和數據庫全局快照,而對性能影響微乎其微,最多帶來2%的性能差異。同時我們利用阿裏雲大數據技術能力,實現了冷熱數據的計算加速,大量曆史數據可以快速完成計算工作,可以很快給出分析結果,架構如下圖三,增加了從數據庫到日誌文件的寫入部分強調阿裏雲特有的內核日誌優化工作。
智能學習分析手段
阿裏雲數據庫上運行著各行各業的數據庫係統,覆蓋了海量業務場景,阿裏雲DBA專家多年優化診斷經驗就沉澱在CloudDBA的規則引擎係統上,通過規則引擎可輕鬆實現一種業務場景的問題、條件與解法的研發。並且我們利用了機器學習能力,自動去抽象各業務的獨有特色,可以很方便的實現獨立業務和普適規則的匹配,為業務特有場景輕鬆推薦最優的優化解法。由於阿裏雲業務的快速發展,目前數據庫實例已經超過10萬,規則引擎中的優化模型越來越完備,而差異算法可輕鬆識別新的業務場景,若真出現沒有遇見過的“遺漏”,我們也可最快兼容。
圖四就是CloudDBA的四大引擎工作架構圖,請注意專家知識庫並不是文檔,而是規則引擎工作的原材料,這是阿裏雲數據庫服務海量實例的特有數據。
四大引擎解釋說明如下:
規則引擎:後台靈活配置各種性能規則,問題、條件和解法,可快速實現新場景的優化方案開發。
性能分析引擎:實時分析潛在性能風險,每種性能都有預先可定製的性能規則。
實時診斷引擎:實時響應用戶診斷具體對象問題,每個資源都有一係列定製化的檢查規則列表。
SQL優化引擎:基於曆史數據,分析SQL、事務、鎖等核心DB資源的性能問題,並給出優化改進建議。
阿裏雲完備的調優與診斷工具
依托於雲數據庫的強大內核,使得在不影響業務的前提下調優與診斷變得非常簡單。雲數據庫天然的彈性能力,無論升級或者調優對用戶影響都極小。阿裏雲數據庫內核團隊,長期對技術孜孜不倦的追求,優化了大量的引擎層代碼,如熱升級、連接池、online DDL優化、熱點行優化、在線限流工具、並行複製、秒殺補丁等,這使得調優和解決問題變得相當簡單,絕大數情況您隻需要一點就可以解決問題。
CloudDBA功能概述
CloudDBA根據用戶使用場景,從時間維度將功能切分為兩大塊,分別是一個專注於當下的問題診斷和SQL操作相關功能,另外一個則專注於對曆史數據進行全麵分析產出係統性能優化方法功能。但這兩者也不是嚴格的根據時間切割,如SQL操作中對語句性能的分析,也會參考過去曆史性能數據產出最優的優化分析。
問題診斷功能,描述數據庫當下的狀態,性能問題、其他問題都會以用戶一種可見資源表現出來,如CPU、連接數等。CloudDBA以這類麵向用戶的資源為起點,分析可能引起該問題的原因,分析邏輯在後台做到可配置,開發新代碼會非常的容易,並且分析邏輯會不停的深入。我們將每個用戶可見資源(如CPU)定義為一個診斷項,每個診斷項在後台規則引擎中會定義一定量可變的檢查條目,當診斷時會逐個檢查條目進行診斷,沒有問題就忽略,有問題就會返回給分析引擎和診斷引擎,這兩個引擎會結合曆史數據給出結果。
第一版CloudDBA問題診斷集合包括 CPU、空間、慢SQL、鎖信息、熱點表等基礎內容。
性能優化功能,用戶可直接通過SQL操作來檢查自己寫的語句在指定數據庫中執行是否會存在性能隱患,用戶可以查看執行計劃、可以診斷SQL獲取優化結果,當然用戶亦可在操作界麵直接執行SQL查看結果。
CloudDBA基於內核優化的SQL審計文件,可快速查詢指定時間段內的TOP SQL和問題事務。SQL語句可以根據執行次數、執行時間等多種方式排序,事務信息可找出事務包含的語句、事務執行次數、事務執行時間等信息,方便快速定位問題事務。
最後可基於時間段快速創建一份數據庫診斷報告,報告可下載可分享,包含了數據庫的全麵分析,內容豐富如涵蓋了索引、外鍵、死鎖、連接、事務、SQL語句、空間、隻讀延遲等信息。一份報告就是一份數據庫的快照,它涵蓋了問題診斷和性能優化,如下圖中展示了一個問題SQL的報告內容:
總結
阿裏雲數據庫推出CloudDBA目的是協助客戶定位解決問題,並且將大量常見問題的診斷優化自動化,利用機器學習、大數據手段快速複製資深DBA的能力,服務於雲上企業。最後我們想說,讓用戶更高效高安心使用雲數據庫是我們追求的唯一目標,並且我們致力於將CloudDBA打造為雲數據庫的標準配置,而且我們不斷學習不斷改進永久迭代。
最後更新:2017-09-25 11:03:28