面向個性化需求的線上雲資料庫混合調優系統 | SIGMOD 2022入選論文解讀

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

SIGMOD 數據管理國際會議是資料庫領域具有最高學術地位的國際性會議,位列資料庫方向頂級會議之首。近日,騰訊雲資料庫團隊的最新研究成果入選 SIGMOD 2022 Research Full Paper(研究類長文),入選論文題目為“HUNTER: An Online Cloud Database ...


SIGMOD 數據管理國際會議是資料庫領域具有最高學術地位的國際性會議,位列資料庫方向頂級會議之首。近日,騰訊雲資料庫團隊的最新研究成果入選 SIGMOD 2022 Research Full Paper(研究類長文),入選論文題目為“HUNTER: An Online Cloud Database Hybrid Tuning System for Personalized Requirements”。標志著騰訊雲資料庫團隊在資料庫AI智能化上取得進一步突破,實現性能領先。

資料庫參數自動調優在學術界和工業界都已有較多研究,但現有的方法在缺少歷史數據時或是面對新負載進行參數調優時,往往面臨著調優時間過長的問題(可達到數天)。在此篇論文中,團隊提出了混合調優系統Hunter,即改進後的 CDBTune+,主要解決了⼀個問題:如何在保證調優效果的前提下顯著減少調優時間。經實驗調優效果明顯:隨著併發度提升實現調優時間準線性降低,在單併發度場景下調優時間只需17小時,在20併發度場景下調優時間縮短至2小時。

工作原理(技術原理解析)

這是CDB/CynosDB資料庫團隊第三次研究成果論文被SIGMOD收錄。繼2019年資料庫團隊首度提出基於深度強化學習(DRL)的端到端雲資料庫參數調優系統CDBTune,該研究論文“An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning”入選SIGMOD 2019 Research Full Paper(研究類長文)。

file

雖然CDBTune 在調參效果上已經達到了⼀個相當高的水平,但我們也發現,CDBTune 需要較長的調優時間才能通過自我學習達到較高的性能。

對此,本次收錄論文中提出改進的 CDBTune+,能夠在保證調優效果的前提下極大地縮減調優耗時。

改進的混合調優系統CDBTune+,主要包含樣本生成、搜索空間優化、深度推薦三個階段。樣本生成階段利用遺傳演算法進行初期調優,快速獲取高質量樣本;搜索空間優化階段利用上⼀階段的樣本信息減小解空間,減少學習成本;深度推薦階段利用之前階段的信息進行維度優化和強化學習預訓練,保證調優效果的同時顯著減少調優時間。

為了進⼀步對調優過程進行加速,我們充分利用CDB 的克隆技術,採用多台資料庫實例實現並行化, 令整個調優時間更進⼀步地減少。

file

樣本生成

如下圖所示,由於基於學習的調優方法在訓練初期都有著調優效果差、收斂速度慢等問題(我們稱之為冷啟動問題)。

我們認為這些方法面臨冷啟動問題主要是因為:

1、樣本數量少質量差,網路難以快速學到正確的探索方向。
2、搜索空間大,網路結構複雜,學習速度緩慢。

為了緩解上述問題,我們採用收斂速度更快的啟髮式方法(如:遺傳演算法(GA))進行初期的調優,以此快速獲得高質量的樣本。

如圖 5 所示,不同方法進行 300 次的參數推薦,圖中是這 300 次參數所對應的資料庫性能分佈。可以見得,相較於其他的方法,GA 能夠收集到更多的高性能參數。

雖然有著更快的學習速度,但是 GA 卻可能更容易收斂到次優解,如圖 6 所示。

file
file

啟髮式方法雖有著較快的收斂速度,但是卻容易收斂到局部最優,導致最終調優效果不佳。

而基於學習的方法卻在較長的調優時間後可以得到較高的性能,但是卻需要較長的訓練時間,速度較慢。我們將兩種方法結合,即加快了調優速度,也確保了參數質量。

搜索空間優化

單純地將兩者拼接難以有⼀定的性能提升(節約約 20%的時間),但是我們期望更多。

利用樣本生成階段可以獲得較多高質量的樣本,但是卻沒有將其效果充分發揮。我們利用PCA 進行狀態空間降維,Random Forests 進行參數重要性排序。

PCA 是⼀種常用的降維方法,可將高維數據降為低維數據的同時保留大部分信息。我們採用累計方差貢獻率來衡量信息的保留度,⼀般來說,當累計方差貢獻率 > 90%時即可認為信息得到了完全的保留。

我們選擇貢獻率最大的兩個成分,並以此作為 x、y 軸描點,以其對應的資料庫性能作為點的顏色(顏色越深性能越低),可以看出,低性能的點可以被兩個成分較為明顯的區分開來,由此可見,PCA 能夠幫助 DRL 更好地學習。

隨機森林可以被用來計算特征的重要性,我們以資料庫參數為輸入,對應的資料庫性能為輸出訓練隨機森林模型,然後計算各個資料庫參數的重要性,併進行排序。採用不同數量的 Top 參數進行參數調優可以看到資料庫最優性能的變化,在⼀定數量的樣本保證下,TPC-C 負載調整 20 個參數即可達到較高的性能。
file

file

深度推薦

經歷樣本生成和搜索空間優化後,我們在深度推薦階段採用深度強化學習(DRL)來進行參數推薦。

首先,搜索空間優化的結果會對 DRL 的網路進行優化,減少其輸入輸出的維度,簡化網路結構。

其次,樣本生成階段的樣本將加入DRL 的經驗池中,由 DRL 進行⼀定程度的預訓練。
最後,DRL 將基於改進後的探索策略進行參數推薦。

DRL 的基本結構與 CDBTune 類似,為了充分利用高質量的歷史數據,我們修改了其探索策略。動作 (資料庫參數配置)有⼀定概率在歷史最優參數附近探索,具體的計算方法如下圖所示。
file
Ac 表示 DRL 的結果,Abest 表示歷史最優,初始情況下 Ac 的概率為 0.3。

調優效果性能分析

效果分析

為了測試不同調優方法從零開始進行參數調優的效果,我們在不同負載下進行了測試。在測試中,所有方法都沒有任何的預訓練。其中 HUNTER-20 表示以 20 個實例進行併發調優的 HUNTER。

file

如下圖所示,雖然只有我們的方法提供了併發功能,但是併發加速本身是通用的,因此,我們在真實負載下對不同方法做了進⼀步測試。雖然大部分方法藉助較長的調優時間可以獲得足夠高的性能,但是,在相同的代價情況下 (時間*實例數),HUNTER 的表現是最好的。
file

下圖展示了 HUNTER-N 達到串列所能找到的最優性能的調優耗時,可見調優速度的效果,隨著併發度增加,調優時間顯著縮短。
file

不足

對於 DBA 來說,負載越簡單所需的調優時間應該會越短,但是自動調優方法卻沒有這樣的特質,如我們上述的實驗圖所示,有些時候,簡單負載可能需要更多的時間來獲得更高的性能。更重要的在於,我們目前難以快速地判斷性能是否達到了“最優”,這導致我們花費了額外的時間來觀察調優系統是否能令資料庫性能再得到提高。

目前

通過技術解讀和效果分析,我們可以看出改進後的Hunter大幅提升調優效果,同時體現出論文對實際資料庫問題的落地可能性很高,具有指導方法意義。

在接下來的研究中,我們希望結合專家經驗來解決上文提到的問題,提高參數調優的可解釋性並更進一步壓縮調優時間,同時也希望找到一種估計最優性能的方法,從而減少額外的調優時間。

CDBTune+旨在降低資料庫參數調優的複雜度,實現參數調優零運維,是騰訊雲資料庫AI智能化變革的再一次跨越和實現。智能調優一期已經在騰訊雲MySQL產品上線,後續會在更多騰訊雲資料庫產品上應用,為學術及工業界帶來更多貢獻和服務。


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

-Advertisement-
Play Games
更多相關文章
  • 一、通配符 匹配參數,匹配文件/目錄名字 : *.txt *.sh lidao{1,4}.txt | * | 所有 | | | | | {} | 生成序列 | | [] | 【a-z】匹配小寫字母,一個中括弧相當於一個字元 | | [^] | 取反排除 | | ? | 任何一個字元 | 1. 通配符 ...
  • Background NGINX 是一個通用且流行的應用程式。也是最流行的 Web 伺服器,它可用於提供靜態文件內容,但也通常與其他服務一起用作分散式系統中的組件,在其中它用作反向代理、負載均衡 或 API 網關。 分散式追蹤 distributed tracing 是一種可用於分析與監控應用程式的 ...
  • 1 存儲引擎 1、簡單描述一個Mysql的內部結構? MySQL的基本架構示意圖: 大體來說,MySQL可以分為server層和存儲引擎層兩部分。 ① server層包括連接器、查詢緩存、分析器、優化器、執行器等,涵蓋MySQL的大多數核心服務功能 ② 存儲引擎層:存儲引擎層負責數據的存儲和提取。其 ...
  • ###@Spark分區器(Partitioner) ####HashPartitioner(預設的分區器) HashPartitioner分區原理是對於給定的key,計算其hashCode,並除以分區的個數取餘,如果餘數小於0,則餘數+分區的個數,最後返回的值就是這個key所屬的分區ID,當key為 ...
  • 一鍵直達直播間 一、直播介紹 上兩期渡劫同學為大家分享了ChunJun數據還原的DDL模塊,想必大家對這一模塊有了比較深入的瞭解,本期無倦同學將會為大家分享ChunJun同步Hive事務表的相關內容,直播將從Hive事務表的結構及原理、ChunJun讀寫Hive事務表實戰、源碼解析及ChunJun文 ...
  • 一. 下載mysql 8.0.29軟體包 下載點我 二. 解壓,初始化安裝 1,打開下載後文件所在目錄,使用解壓軟體解壓,打開文件夾!(如圖,文件路徑不要出現中文!) 2,創建my.ini文件,創建前先開啟文件尾碼名顯示防止文件格式錯誤! 3,右鍵空白處,新建>文本文檔>選中文件>重命名>全選>文件 ...
  • 前言 上文介紹了ES的各種查詢; 本文介紹如何在ES進行MySQL中的分組和聚合查詢 實現用戶輸入拼音自動補全功能 實現MySQL和ES之間的數據自動同步; 一、分組聚合 在ES中對於聚合查詢,主要分為2大類:指標(Metric)聚合 與 桶(Bucket)聚合。 指標聚合:max、min、sum等 ...
  • PostgreSQL upgrade 以升級 PostgreSQL 9.1 至 PostgreSQL 11 (跨越 9.2、9.3、9.4、9.5、9.6、10 六個大版本) 為例,本文將分享一下過去一年升級數十套 PostgreSQL 生產集群的實際經驗。 此步驟同樣適用於 PostgreSQL ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...