在2022世界人工智慧大會(WAIC)上,騰訊雲資料庫技術負責人程彬為大家分享了資料庫與 AI 相結合背後的故事。在專場《當資料庫遇上 AI 》中,程彬基於騰訊雲資料庫在 AI 智能化的探索與實踐,剖析資料庫與 AI 融合背後的技術關鍵點,為產業界提供前沿解決方案。以下為演講實錄: 點擊觀看完整版直 ...
在2022世界人工智慧大會(WAIC)上,騰訊雲資料庫技術負責人程彬為大家分享了資料庫與 AI 相結合背後的故事。在專場《當資料庫遇上 AI 》中,程彬基於騰訊雲資料庫在 AI 智能化的探索與實踐,剖析資料庫與 AI 融合背後的技術關鍵點,為產業界提供前沿解決方案。以下為演講實錄:
線上、線下的朋友們,大家好,我是騰訊雲資料庫工程師程彬,非常榮幸能夠在這個時期跟大家一起交流資料庫技術。今天我代表我們團隊,和大家一起談談AI和資料庫結合的技術思考,並結合騰訊雲資料庫的實戰經驗分享一下 AI 工程化落地實踐。
雲資料庫面臨的新挑戰
隨著數字化轉型的深入,越來越多的企業生產從線下到線上,大量的數據存儲、查詢就需要使用到資料庫。從騰訊雲資料庫的發展情況也能看出市場對於資料庫需求的不斷增大。其實,規模增長的背後也給雲資料庫帶來了新的挑戰。
對雲廠商來說,大規模運營下的可用性、成本和運營效率遇到了空前的挑戰。比如,可用性上,百萬資料庫實例規模下如何降低故障絕對次數,這裡就對可用性指標有更高的要求;怎麼能高效率服務好幾十萬家企業,幫助他們管理好百萬規模的資料庫?怎麼充分發揮規模運營效率,去不斷的幫助企業降低成本?
另外一方面,對企業來說,在數字化轉型過程中,需要開發大量的企業IT系統,這裡就有開發效率、運營效率和成本的問題。比如,開發人員怎麼能快速的寫出高效的SQL語句?運維人員怎麼管理越來越多的雲上資料庫?面對線上業務負載潮汐效應,怎麼實現最合理的資源投入?
總的來說,規模的快速增長,傳統的運營服務模式已經無法滿足業務需求,資料庫需要進一步智能化技術升級。
方法論升級
我們進一步深入思考發現,在傳統資料庫工程中無法完美的解決上面的問題。
傳統資料庫工程是軟體結合硬體的方法來design資料庫,在這種設計模式下,資料庫能很好的處理預先設定好的問題。比如,通過if else else這樣枚舉方式,去處理各種我們能想到的異常分支。但在大規模運營下,我們發現約2.29%的異常場景難以靠人工快速發現,這些小概率極端故障場景,隨著規模的增大,故障爆炸半徑會不斷放大。我們團隊想到了AI的頻率模式來挖掘,在軟體、硬體的基礎上,結合AI來重新design資料庫,實現系統的自分析和自演進。
於是我們升級了資料庫構建的方法論,從傳統的軟硬體設計演進到軟硬體+AI三位一體的雲原生自治資料庫設計方法。
雲資料庫背後的三角關係
有了新的方法論之後,我們該怎麼去具體構建雲原生自治資料庫呢?
我們先看看雲資料庫背後的一個三角關係:客戶使用雲廠商提供的服務資源來開展業務活動,雲廠商利用和管理硬體資源,為客戶提供服務。它背後有三個效率,系統效率、運營效率和業務效率:
- 業務效率,指怎麼幫助業務去快速開發資料庫應用程式,這裡面就需要能儘可能簡化開發人員使用資料庫門檻。例如,不同水平的開發人員寫出不同效率的SQL語句,但是資料庫都能以最優的效率返回查詢結果。
- 運營效率,雲廠商怎麼保證大規模下運營的效率。例如:現在系統故障了,怎麼快速排查和定位故障的原因並且快速恢復?
- 系統效率,系統效率重點考慮兩個問題,一是如何把CPU記憶體、硬碟這些資源全部用出去,不要閑置;二是,用相同的資源如何能處理更多的請求。
我們就是以極致效率為目標來打造雲資料庫的自治能力。
業務效率
為什麼需要資料庫參數智能調優服務?
傳統資料庫參數調優有三個問題:
- 調參效率低:整個過程需手動操作,準備數據、壓測、調整參數等多輪操作,過程繁瑣;
- 人力成本高:往往依靠專家經驗,人時成本很高;雲上的一些用戶可能缺少專職運維團隊和DBA;
- 調參難度大:資料庫參數很多,業務的資料庫設計和負載也各不相同;
騰訊雲自治資料庫智能參數調優服務 CDBTune,是一個端到端的一站式參數調優服務,無需人為介入,基於深度強化學習等AI技術實現,可根據場景自動探索優化參數。同時在調優速度上也實現了突破,通過沉澱專家經驗和加入遺傳演算法等實現,調優速度可以通過增加併發度實現準線性的提升,調優時間大幅度縮短。
目前CDBTune共支持六千多種調參場景,自5月份灰度上線以來,總計支持300+實例調優。場景化調優 TPS 性能提升最高300%,平均提升43%。調優時效從原來人工花費幾天縮短到兩小時以內;對於預調優的場景,調優時間在10分鐘以內。
由於資料庫領域的特殊性質,ML工程化落地案例較少,智能參數調優服務需要實現從0到1的突破。為此需要解決三個難點:
- 巨大的參數空間:比如,MySQL繫數據庫,400+參數帶來的指數級組合,參數空間巨大;
- 耗時冗長:參數空間巨大也帶來了調優耗時費力,需要大幅度提升調優效率,獲得更好的調優效果;
- 基於用戶負載的調優:場景化調優只是解決了通用場景調優,由於每個業務workload都有不確定性和各自特征,因此只有支持了基於用戶負載的調優,才能真正意義上實現參數最最優,覆蓋實例新購、快速迭代和穩定運行階段;
為瞭解決參數空間巨大的問題,我們使用了深度強化學習演算法DDPG。
強化學習是機器學習演算法中的一種,它通過學習如何把當前的情境映射成動作,使收益最大化。它通過已有的經驗去學習,並且以一定的代價去探索未知的環境,在兩者之間進行一個權衡。
由於資料庫的狀態(性能指標)和它的動作空間(參數配置的組合)是非常大的,通過表格來學習是不現實的,為此需要引入深度強化學習的演算法,通過神經網路進行擬合。經過多次實驗比較,這裡我們選擇了DDPG,深度確定性策略梯度演算法。
其次,為了提升訓練速度,我們在模型里首先加入了專家經驗和遺傳演算法(GA)進行預熱。基於專家經驗,可以根據實例的規格、負載的類型等條件,獲得相對較好的參數推薦。然後使用遺傳演算法,經過選擇、交叉和變異,進一步獲得一批高質量樣本。這兩種方法可以加快整個調參的速度。
同時,我們使用了並行架構。通過騰訊雲資料庫提供的克隆實例功能,我們可以批量獲得相同的訓練實例。通過並行訓練,可以大大縮短訓練所需的時間。
我們在不同的資料庫配置和不同的負載下,做了很多測試,CDBTune的效果都比較不錯。這裡列出了其中一個場景的調優效果,在某些情況下CDBTune基本能達甚至超過一個資深DBA的水平。在sysbench和tpcc的場景下,吞吐的提升一般在10%-50%左右。
在去年年底騰訊內部舉行的資料庫性能調優比賽中,CDBTune作為參賽選手,最終性能獲得了第二名的成績,與人類選手的最優成績相差不大,同時在調優時間上有巨大的優勢。
場景調優在業務新上線和快速迭代階段,可以幫助業務高效調優。但是場景仍然有限,不能完全契合業務需求。在業務穩定運行階段,需要基於用戶負載進行調優。
負載回放本身是一個難題,包括負載的併發處理,回放完之後的數據恢復等,這些問題導致我們想要多次執行負載變得困難。另外,有些時候希望靈活的控制負載的壓力,在不同壓力場景下進行調優。
我們使用負載模擬來解決這個問題,通過對原始負載進行抽象化與再現,儘可能的再現業務負載特征。
- 通過提取事務和SQL模板,保留負載基本特征;
- 根據數據類型和數據分佈生成測試數據,保留數據特征的同時進行數據脫敏;
- 根據SQL的數據訪問分析,統計數據訪問分佈,重現數據訪問熱點;
- 按需調整負載,自定義數據量和測試壓力;
我們目前實驗室環境可以達到80%的模擬度。通過負載模擬,可以儘可能做到與原始負載近似,同時又可以按需自定義負載的壓力等屬性,並且可以反覆執行。由此,也可以在多種場景下進行應用,比如:
- 功能上線前, 首先在我們生成的不同規模的負載下進行驗證, 判斷其可能存在的瓶頸;
- 參數調優、索引推薦等自治資料庫方法應用時, 通過我們生成的負載進行推薦, 以較低的代價實現針對用戶負載的優化;
以上智能調參技術分別收錄在2019和2022年的資料庫頂會 SIGMOD 的論文中。
我們最新的研究成果在資料庫頂級會議SIGMOD 2022已經發表,介紹了演算法實現、模型設計和效果評估等。大家感興趣可以去官網查閱相關資料,也可以在騰訊雲資料庫公眾號上查閱哦,傳遞門見下,點擊即可查看詳情哦:
【2022SIGMOD】面向個性化需求的線上雲資料庫混合調優系統 | SIGMOD 2022入選論文解讀
【2019SIGMOD】AI調參新紀元,騰訊資料庫論文被SIGMOD收錄
運營效率
大規模運營發現,大概有2.29%的故障場景常規探測無法完美覆蓋,海量場景下這個問題也會是災難性的。
例如,在一個電商客戶直播帶貨時候,由於撥測無法及時發現資料庫節點異常,就有可能導致客戶這次活動的失敗。
為了更好的保障業務連續性,做到故障切換時間P99=20秒,我們從常規探測切換的方式升級到全景化的業務連續性保障。
- 故障前,通過預測負載變化、硬體故障檢測等發現異常提前處理;
- 故障中,DB、OS和硬體的實時檢測,實現秒級的精確故障發現;
- 故障後,基於資料庫代理的連接保持和事務保持能力,連接不中斷,事務不回滾,切換過程幾乎可以做到客戶無感知;
- 在故障診斷能力上,結合客戶負載變化和多級檢測信息,生成全鏈路診斷報告和根因分析,提升運維效率並持續發現優化更多異常場景;
基於全景化業務連續性的能力,我們的RTO恢復時長,從19年到現在減少了74%。舉個例子:通過騰訊雲資料庫SHIELD異常診斷系統,我們生成里實例的全鏈路診斷報告和根因分析。
上圖中的實例產生了撥測不通的情況,在短時間內發生了多次HA,通過對實例的監控、日誌等指標多維關聯分析,得到了故障的根因分析 - 實例高負載 。同時整個切換過程以及切換的時間是符合預期的,符合SLA要求。
騰訊雲資料庫在日常運營中,會持續對實例的健康狀態進行檢測。目前,日均檢測出超過一千萬次的異常事件,亞健康實例占比約有15%,持續高負載實例約1%,資源超用的實例占比約10%。同時,由於各種異常也帶來了大量的工單,比如高負載、高併發和資源占用過多的咨詢等。
如此多的異常,顯然不能靠人力分析。為此我們構建了實時的、多場景覆蓋、多維度智能分析和處理的閉環能力:
- 通過秒級的日誌和監控採集能力,實時發現異常;
- 在靜態和動態閾值檢測的基礎上,結合趨勢、偏移、周期性、尖刺、3σ 等演算法,準確檢測異常;
- 基於規則的分析,比如慢查詢、SQL審計和活躍會話的TOP分析,找到大SQL、慢SQL等;通過監控指標的相關性分析,找到與異常相關的指標;通過常見場景的診斷路徑,直接定位到根因;
- 基於學習的分析,通過聚類、人工標註和神經網路的學習,結合專家經驗,學習一些異常的pattern並給出根因分析;
目前異常檢測可以做到在30秒內發現問題,在1分鐘內給出相應的分析結果和優化建議,異常處理的時間大幅下降80%。舉個例子:
- 高負載、高併發問題,可以通過異常診斷閉環,主動推送優化建議,比如優化參數,開啟線程池等;
- 通過規則化配置,可以快速獲得運營過程中的整體統計(如資源的不合理使用和調度的情況)發現運營過程中的問題。
系統效率
資料庫主要使用的機器資源有CPU、記憶體和磁碟,傳統資料庫通常需要在購買時選定固定的規格,客戶必須為峰值性能買單。而雲原生資料庫TDSQL-C通過計算存儲分離架構,將存儲池化,計算無狀態化,實現了極致彈性能力,因而客戶可以為實際使用買單。
在增強彈性能力的同時,也帶來了網路延時。所以,雲原生資料庫通常會引入RDMA、AEP等新硬體,並通過採用軟硬結合的方式,避免分層架構引入的性能開銷。
此外,TDSQL-C 打破傳統固定規格的產品形態,打造根據業務的負載對計算資源進行自動伸縮,按照實際使用計費,不使用不計費的serverless形態。為了實現計算資源的自動伸縮,資料庫在啟停方面做了很多優化,保證系統能在幾秒內完成停機和重啟恢復,提升極致業務體驗。目前我們結合微信小程式的生態,為成千上萬的客戶提供服務。
為了更充分的使用資源,在使用傳統的BestFit演算法進行裝箱和調度的基礎上,同時也考慮了實例當前和未來對資源的使用情況。通過AI演算法對業務負載進行合理預測,實現更加智能的 Serverless 產品形態。
未來展望
未來我們繼續探索架構的先進性、極致的軟體工程能力。與此同時,我們會深刻理解客戶業務場景,把架構能力、軟體工程能力覆蓋到更多的業務場景中。
在智能技術實踐上,我們繼續踐行軟硬AI三位一體化的自治資料庫:
-
AI for DB,探索AI與資料庫的有機結合,實現基於學習的資料庫組件
內置業務優化組件,如基於負載的智能索引管理,負載優化等;
查詢優化組件,如基數估計、代價估計、謂詞分析、學習型優化器等;
數據組織方式,學習型索引,智能冷熱數據分層,智能壓縮等; -
DB for AI,內置機器學習,在資料庫中實現近數據的機器學習演算法執行,幫助所有機器學習的開發者能有一個更安全和漸變的基數設施,賦能AI工程化應用
執行更快、更安全(數據不出庫)、成本更低;
簡化AI工程化應用複雜度,進一步賦能產業;
讓我們拭目以待!