面向個性化需求的線上雲資料庫混合調優系統 | 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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...