未來,軟+硬+AI三位一體化自治資料庫

来源:https://www.cnblogs.com/tencentdb/archive/2022/09/07/16664668.html
-Advertisement-
Play Games

在2022世界人工智慧大會(WAIC)上,騰訊雲資料庫技術負責人程彬為大家分享了資料庫與 AI 相結合背後的故事。在專場《當資料庫遇上 AI 》中,程彬基於騰訊雲資料庫在 AI 智能化的探索與實踐,剖析資料庫與 AI 融合背後的技術關鍵點,為產業界提供前沿解決方案。以下為演講實錄: 點擊觀看完整版直 ...


在2022世界人工智慧大會(WAIC)上,騰訊雲資料庫技術負責人程彬為大家分享了資料庫與 AI 相結合背後的故事。在專場《當資料庫遇上 AI 》中,程彬基於騰訊雲資料庫在 AI 智能化的探索與實踐,剖析資料庫與 AI 融合背後的技術關鍵點,為產業界提供前沿解決方案。以下為演講實錄:

點擊觀看完整版直播回放

線上、線下的朋友們,大家好,我是騰訊雲資料庫工程師程彬,非常榮幸能夠在這個時期跟大家一起交流資料庫技術。今天我代表我們團隊,和大家一起談談AI和資料庫結合的技術思考,並結合騰訊雲資料庫的實戰經驗分享一下 AI 工程化落地實踐。

雲資料庫面臨的新挑戰

file

隨著數字化轉型的深入,越來越多的企業生產從線下到線上,大量的數據存儲、查詢就需要使用到資料庫。從騰訊雲資料庫的發展情況也能看出市場對於資料庫需求的不斷增大。其實,規模增長的背後也給雲資料庫帶來了新的挑戰。

對雲廠商來說,大規模運營下的可用性、成本和運營效率遇到了空前的挑戰。比如,可用性上,百萬資料庫實例規模下如何降低故障絕對次數,這裡就對可用性指標有更高的要求;怎麼能高效率服務好幾十萬家企業,幫助他們管理好百萬規模的資料庫?怎麼充分發揮規模運營效率,去不斷的幫助企業降低成本?

另外一方面,對企業來說,在數字化轉型過程中,需要開發大量的企業IT系統,這裡就有開發效率、運營效率和成本的問題。比如,開發人員怎麼能快速的寫出高效的SQL語句?運維人員怎麼管理越來越多的雲上資料庫?面對線上業務負載潮汐效應,怎麼實現最合理的資源投入?

總的來說,規模的快速增長,傳統的運營服務模式已經無法滿足業務需求,資料庫需要進一步智能化技術升級

方法論升級

file

我們進一步深入思考發現,在傳統資料庫工程中無法完美的解決上面的問題。

傳統資料庫工程是軟體結合硬體的方法來design資料庫,在這種設計模式下,資料庫能很好的處理預先設定好的問題。比如,通過if else else這樣枚舉方式,去處理各種我們能想到的異常分支。但在大規模運營下,我們發現約2.29%的異常場景難以靠人工快速發現,這些小概率極端故障場景,隨著規模的增大,故障爆炸半徑會不斷放大。我們團隊想到了AI的頻率模式來挖掘,在軟體、硬體的基礎上,結合AI來重新design資料庫,實現系統的自分析和自演進

於是我們升級了資料庫構建的方法論,從傳統的軟硬體設計演進到軟硬體+AI三位一體的雲原生自治資料庫設計方法。

雲資料庫背後的三角關係

file

有了新的方法論之後,我們該怎麼去具體構建雲原生自治資料庫呢?

我們先看看雲資料庫背後的一個三角關係:客戶使用雲廠商提供的服務資源來開展業務活動,雲廠商利用和管理硬體資源,為客戶提供服務。它背後有三個效率,系統效率、運營效率和業務效率:

  • 業務效率,指怎麼幫助業務去快速開發資料庫應用程式,這裡面就需要能儘可能簡化開發人員使用資料庫門檻。例如,不同水平的開發人員寫出不同效率的SQL語句,但是資料庫都能以最優的效率返回查詢結果。
  • 運營效率,雲廠商怎麼保證大規模下運營的效率。例如:現在系統故障了,怎麼快速排查和定位故障的原因並且快速恢復?
  • 系統效率,系統效率重點考慮兩個問題,一是如何把CPU記憶體、硬碟這些資源全部用出去,不要閑置;二是,用相同的資源如何能處理更多的請求。

我們就是以極致效率為目標來打造雲資料庫的自治能力。

業務效率

file

為什麼需要資料庫參數智能調優服務?

傳統資料庫參數調優有三個問題:

  • 調參效率低:整個過程需手動操作,準備數據、壓測、調整參數等多輪操作,過程繁瑣;
  • 人力成本高:往往依靠專家經驗,人時成本很高;雲上的一些用戶可能缺少專職運維團隊和DBA;
  • 調參難度大:資料庫參數很多,業務的資料庫設計和負載也各不相同;

騰訊雲自治資料庫智能參數調優服務 CDBTune,是一個端到端的一站式參數調優服務,無需人為介入,基於深度強化學習等AI技術實現,可根據場景自動探索優化參數。同時在調優速度上也實現了突破,通過沉澱專家經驗和加入遺傳演算法等實現,調優速度可以通過增加併發度實現準線性的提升,調優時間大幅度縮短。

目前CDBTune共支持六千多種調參場景,自5月份灰度上線以來,總計支持300+實例調優。場景化調優 TPS 性能提升最高300%,平均提升43%。調優時效從原來人工花費幾天縮短到兩小時以內;對於預調優的場景,調優時間在10分鐘以內。

file

由於資料庫領域的特殊性質,ML工程化落地案例較少,智能參數調優服務需要實現從0到1的突破。為此需要解決三個難點:

  • 巨大的參數空間:比如,MySQL繫數據庫,400+參數帶來的指數級組合,參數空間巨大;
  • 耗時冗長:參數空間巨大也帶來了調優耗時費力,需要大幅度提升調優效率,獲得更好的調優效果;
  • 基於用戶負載的調優:場景化調優只是解決了通用場景調優,由於每個業務workload都有不確定性和各自特征,因此只有支持了基於用戶負載的調優,才能真正意義上實現參數最最優,覆蓋實例新購、快速迭代和穩定運行階段;

為瞭解決參數空間巨大的問題,我們使用了深度強化學習演算法DDPG

強化學習是機器學習演算法中的一種,它通過學習如何把當前的情境映射成動作,使收益最大化。它通過已有的經驗去學習,並且以一定的代價去探索未知的環境,在兩者之間進行一個權衡。

由於資料庫的狀態(性能指標)和它的動作空間(參數配置的組合)是非常大的,通過表格來學習是不現實的,為此需要引入深度強化學習的演算法,通過神經網路進行擬合。經過多次實驗比較,這裡我們選擇了DDPG,深度確定性策略梯度演算法。

其次,為了提升訓練速度,我們在模型里首先加入了專家經驗和遺傳演算法(GA)進行預熱。基於專家經驗,可以根據實例的規格、負載的類型等條件,獲得相對較好的參數推薦。然後使用遺傳演算法,經過選擇、交叉和變異,進一步獲得一批高質量樣本。這兩種方法可以加快整個調參的速度。

同時,我們使用了並行架構。通過騰訊雲資料庫提供的克隆實例功能,我們可以批量獲得相同的訓練實例。通過並行訓練,可以大大縮短訓練所需的時間。

我們在不同的資料庫配置和不同的負載下,做了很多測試,CDBTune的效果都比較不錯。這裡列出了其中一個場景的調優效果,在某些情況下CDBTune基本能達甚至超過一個資深DBA的水平。在sysbench和tpcc的場景下,吞吐的提升一般在10%-50%左右。

在去年年底騰訊內部舉行的資料庫性能調優比賽中,CDBTune作為參賽選手,最終性能獲得了第二名的成績,與人類選手的最優成績相差不大,同時在調優時間上有巨大的優勢。

file

場景調優在業務新上線和快速迭代階段,可以幫助業務高效調優。但是場景仍然有限,不能完全契合業務需求。在業務穩定運行階段,需要基於用戶負載進行調優。

負載回放本身是一個難題,包括負載的併發處理,回放完之後的數據恢復等,這些問題導致我們想要多次執行負載變得困難。另外,有些時候希望靈活的控制負載的壓力,在不同壓力場景下進行調優。

我們使用負載模擬來解決這個問題,通過對原始負載進行抽象化與再現,儘可能的再現業務負載特征。

  • 通過提取事務和SQL模板,保留負載基本特征;
  • 根據數據類型和數據分佈生成測試數據,保留數據特征的同時進行數據脫敏;
  • 根據SQL的數據訪問分析,統計數據訪問分佈,重現數據訪問熱點;
  • 按需調整負載,自定義數據量和測試壓力;

我們目前實驗室環境可以達到80%的模擬度。通過負載模擬,可以儘可能做到與原始負載近似,同時又可以按需自定義負載的壓力等屬性,並且可以反覆執行。由此,也可以在多種場景下進行應用,比如:

  • 功能上線前, 首先在我們生成的不同規模的負載下進行驗證, 判斷其可能存在的瓶頸;
  • 參數調優、索引推薦等自治資料庫方法應用時, 通過我們生成的負載進行推薦, 以較低的代價實現針對用戶負載的優化;

file

以上智能調參技術分別收錄在2019和2022年的資料庫頂會 SIGMOD 的論文中。

我們最新的研究成果在資料庫頂級會議SIGMOD 2022已經發表,介紹了演算法實現、模型設計和效果評估等。大家感興趣可以去官網查閱相關資料,也可以在騰訊雲資料庫公眾號上查閱哦,傳遞門見下,點擊即可查看詳情哦:

【2022SIGMOD】面向個性化需求的線上雲資料庫混合調優系統 | SIGMOD 2022入選論文解讀
【2019SIGMOD】AI調參新紀元,騰訊資料庫論文被SIGMOD收錄

運營效率

file

大規模運營發現,大概有2.29%的故障場景常規探測無法完美覆蓋,海量場景下這個問題也會是災難性的。

例如,在一個電商客戶直播帶貨時候,由於撥測無法及時發現資料庫節點異常,就有可能導致客戶這次活動的失敗。

為了更好的保障業務連續性,做到故障切換時間P99=20秒,我們從常規探測切換的方式升級到全景化的業務連續性保障。

  • 故障前,通過預測負載變化、硬體故障檢測等發現異常提前處理;
  • 故障中,DB、OS和硬體的實時檢測,實現秒級的精確故障發現
  • 故障後,基於資料庫代理的連接保持和事務保持能力,連接不中斷,事務不回滾,切換過程幾乎可以做到客戶無感知;
  • 在故障診斷能力上,結合客戶負載變化和多級檢測信息,生成全鏈路診斷報告和根因分析,提升運維效率並持續發現優化更多異常場景;

基於全景化業務連續性的能力,我們的RTO恢復時長,從19年到現在減少了74%。舉個例子:通過騰訊雲資料庫SHIELD異常診斷系統,我們生成里實例的全鏈路診斷報告和根因分析。

上圖中的實例產生了撥測不通的情況,在短時間內發生了多次HA,通過對實例的監控、日誌等指標多維關聯分析,得到了故障的根因分析 - 實例高負載 。同時整個切換過程以及切換的時間是符合預期的,符合SLA要求。

file

騰訊雲資料庫在日常運營中,會持續對實例的健康狀態進行檢測。目前,日均檢測出超過一千萬次的異常事件,亞健康實例占比約有15%,持續高負載實例約1%,資源超用的實例占比約10%。同時,由於各種異常也帶來了大量的工單,比如高負載、高併發和資源占用過多的咨詢等。

如此多的異常,顯然不能靠人力分析。為此我們構建了實時的、多場景覆蓋、多維度智能分析和處理的閉環能力

  • 通過秒級的日誌和監控採集能力,實時發現異常;
  • 在靜態和動態閾值檢測的基礎上,結合趨勢、偏移、周期性、尖刺、3σ 等演算法,準確檢測異常;
  • 基於規則的分析,比如慢查詢、SQL審計和活躍會話的TOP分析,找到大SQL、慢SQL等;通過監控指標的相關性分析,找到與異常相關的指標;通過常見場景的診斷路徑,直接定位到根因;
  • 基於學習的分析,通過聚類、人工標註和神經網路的學習,結合專家經驗,學習一些異常的pattern並給出根因分析;

目前異常檢測可以做到在30秒內發現問題,在1分鐘內給出相應的分析結果和優化建議,異常處理的時間大幅下降80%。舉個例子:

  • 高負載、高併發問題,可以通過異常診斷閉環,主動推送優化建議,比如優化參數,開啟線程池等;
  • 通過規則化配置,可以快速獲得運營過程中的整體統計(如資源的不合理使用和調度的情況)發現運營過程中的問題。

系統效率

file

資料庫主要使用的機器資源有CPU、記憶體和磁碟,傳統資料庫通常需要在購買時選定固定的規格,客戶必須為峰值性能買單。而雲原生資料庫TDSQL-C通過計算存儲分離架構,將存儲池化,計算無狀態化,實現了極致彈性能力,因而客戶可以為實際使用買單。

在增強彈性能力的同時,也帶來了網路延時。所以,雲原生資料庫通常會引入RDMA、AEP等新硬體,並通過採用軟硬結合的方式,避免分層架構引入的性能開銷。

此外,TDSQL-C 打破傳統固定規格的產品形態,打造根據業務的負載對計算資源進行自動伸縮,按照實際使用計費,不使用不計費的serverless形態。為了實現計算資源的自動伸縮,資料庫在啟停方面做了很多優化,保證系統能在幾秒內完成停機和重啟恢復,提升極致業務體驗。目前我們結合微信小程式的生態,為成千上萬的客戶提供服務。

為了更充分的使用資源,在使用傳統的BestFit演算法進行裝箱和調度的基礎上,同時也考慮了實例當前和未來對資源的使用情況。通過AI演算法對業務負載進行合理預測,實現更加智能的 Serverless 產品形態。

未來展望

file

未來我們繼續探索架構的先進性、極致的軟體工程能力。與此同時,我們會深刻理解客戶業務場景,把架構能力、軟體工程能力覆蓋到更多的業務場景中。

在智能技術實踐上,我們繼續踐行軟硬AI三位一體化的自治資料庫

  • AI for DB,探索AI與資料庫的有機結合,實現基於學習的資料庫組件
    內置業務優化組件,如基於負載的智能索引管理,負載優化等;
    查詢優化組件,如基數估計、代價估計、謂詞分析、學習型優化器等;
    數據組織方式,學習型索引,智能冷熱數據分層,智能壓縮等;

  • DB for AI,內置機器學習,在資料庫中實現近數據的機器學習演算法執行,幫助所有機器學習的開發者能有一個更安全和漸變的基數設施,賦能AI工程化應用
    執行更快、更安全(數據不出庫)、成本更低;
    簡化AI工程化應用複雜度,進一步賦能產業;

讓我們拭目以待!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於EMC整改問題,其實能用三要素概括:干擾源、耦合電路、敏感器件;而EMC整改的常用方法也能用四要素概括:屏蔽、接地、濾波、去耦。 以下STS先淺談3種常見的EMC測試具體整改措施:傳導測試干擾整改、輻射測試整改、浪涌測試整改元器件的方法。 傳導測試干擾整改 傳導測試常見的干擾有共模干擾和差模干擾 ...
  • 1. 安裝Mysql-5.6.40 軟體包存放目錄: /usr/local/src/ 1.切換到軟體包目錄操作 cd /usr/local/src/ 使用wget命令下載所需的編譯包 2.解壓操作 tar zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz ...
  • zabbix自定義監控 自定義監控進程 測試監控httpd,需要在監控端部署httpd,以方便監控 配置監控腳本 #在監控端 [root@localhost ~]# dnf -y install httpd [root@localhost ~]# systemctl start httpd [roo ...
  • Java開源博客系統 AngelBlog 是一個簡潔美觀、功能強大並且自適應的Java博客。使用springboot開發,前端使用Bootstrap。支持移動端自適應,配有完備的前臺和後臺管理功能。 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 前言 之前的大多數人分頁採用的都是這樣: SELECT * FROM table LIMIT 20 OFFSET 50 可能有的小伙伴還是不太清楚LIM ...
  • 2022-09-07 1、Mysql中的清屏: system clear 一般的清屏命令:clear 聚合函數 2、查詢某個表中某個欄位的值的個數(使用count) 以“students”表(欄位有id,name,age,gender,height)為例: select count(id) from ...
  • 一、簡介 簡單記錄一下存儲過程的使用。存儲過程是預編譯SQL語句集合,也可以包含一些邏輯語句,而且當第一次調用存儲過程時,被調用的存儲過程會放在緩存中,當再次執行時,則不需要編譯可以立馬執行,使得其執行速度會非常快。 二、使用 創建格式 create procedure 過程名( 變數名 變數類型 ...
  • 摘要:北京國家金融科技認證中心正式公佈了2022年通過“分散式資料庫金融標準驗證”的資料庫產品名單。華為雲GaussDB金融級分散式資料庫以突出的技術優勢通過驗證,躍然榜上,且測試得分遙居前列。 近日,北京國家金融科技認證中心正式公佈了2022年通過“分散式資料庫金融標準驗證”的資料庫產品名單。華為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...