在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工程化應用復雜度,進一步賦能產業;
讓我們拭目以待!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505552.html
標籤:其它
