999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向機器學習的數據庫參數調優技術綜述

2024-03-03 11:21:04姜璐璐高錦濤
計算機工程與應用 2024年3期
關鍵詞:數據庫優化模型

姜璐璐,高錦濤

1.寧夏大學 信息工程學院,銀川 750021

2.寧夏大數據與人工智能省部共建協同創新中心,銀川 750021

數據庫管理系統(DBMS)經過半個多世紀的研究和發展,獲得了快速的技術進步和優異的性能表現,這其中少不了DBA 憑借豐富的個人經驗,對眾多數據庫系統的參數進行調優。數據庫系統參數眾多,并且參數值易變,參數之間還存在邏輯關系。隨著數據庫和應用程序的數量增加,依靠DBA 對數據庫參數進行調優變得十分困難,因為DBA 可能只熟悉部分數據庫參數的調優方式,并且調優過程是啟發式的,不能保證全局最優。而找到全局最優參數配置是一個NP-hard 問題[1],因此需要探索其他解決方案。

機器學習是一門研究如何設計算法、利用數據使機器在特定任務上取得更優表現的學科,具有泛化能力和自我學習進化的能力,至今機器學習研究已經取得大量令人矚目的成就:在圖像分類任務上的識別準確率超過人類水平,能夠生成人類無法輕易識別的逼真圖像等。而數據庫領域學術界和工業界共識的研究重點是將機器學習與數據庫系統進行融合統一,自動化處理各種任務,這其中就包括基于機器學習的數據庫參數調優。2019 年6 月,Oracle 推出云上自治數據庫Autonomous Database;2020 年4 月,阿里云發布“自動駕駛”級數據庫平臺DAS;2021 年3 月,華為發布了融入AI 框架的openGauss2.0 版本。國內外IT 企業紛紛將機器學習融入到自身數據庫系統的參數調優中[2]。

數據庫調參技術是指通過調整數據庫內部相關旋鈕參數,從而提高系統性能的一種方式。對近些年數據庫參數調優技術進行系統研究,基于時間維度,研究針對傳統參數調優技術,從2017 年到2022 年之間的基于機器學習的參數調優方法,按照技術-問題-解決方案的思路,以樹形結構有條理地給出具體的研究技術、存在的問題以及解決這些問題的方案,如圖1,不僅能夠使參數調優領域的研究者對近6 年的相關工作有一個整體的認識,而且能夠提供將來的研究方向。從技術角度,將大方向劃分為傳統調參技術、基于BO(Bayesian optimization)模型的調參技術以及基于RL(reinforcement learning)的調參技術,而基于BO模型的調參系統與基于RL 的調參系統分別以OtterTune(GPR)與CDBTune 為基礎,對其存在的問題進行總結,然后根據問題描述目前存在的解決方案,最后分析該解決的方案又存在的某些問題,給出研究展望。

圖1 數據庫參數調優研究思路Fig.1 Research ideas for database parameters tuning

本文按照圖1的研究思路,從如下三個方面介紹數據庫參數調優系統的演化路徑。

第一類為傳統參數調優技術。傳統參數調優技術分為基于啟發式算法的與基于輔助決策的參數調優技術,基于輔助決策的參數調優技術包括基于規則的與基于經驗模型的參數調優技術。

第二類為基于BO模型的參數調優技術。早期被研究出基于BO 模型的系統之一為OtterTune(GPR)[3],它實現了自動化調優,當然它也存在著眾多問題。比如在大數據集和高維特征向量表現不佳、沒有對分布式數據庫進行處理、調優時間長不能反應真實的工作負載或者調優復雜等等。針對上述問題,OtterTune(DNN)[4]、RelM[5]、OnlineTune[6]、CGPTuner[7]、ResTune[8]、Llama-Tune[9]等對上述問題提出了對應的解決方案。OtterTune(GPR)與CDBTune將調優思路集中在提高吞吐量和延遲上,而沒有同時優化資源和SLA?;诖耍琑esTune將調參問題抽象成帶限制的優化問題并且采用了帶限制的EI 函數來解決上述問題。對于RelM 系統,它解決OtterTune(GPR)與CDBTune等調優系統沒對分布式數據處理系統調優的問題,提出加快勘探需要一種基于改進的策略,該策略遵循基于序列模型的優化(SMBO),并且使用RelM 的分析模型來加速BO。由于OtterTune(GPR)與CDBTune 推薦的配置中有50%~70%比默認配置更差,且調優時間長,用戶調優成本也較高,因此OnlineTune提出上下文特征化模型,能夠有效降低計算復雜度和模型選擇策略。CDBTune 系統使用DDPG 算法進行參數調優,該算法使用神經網絡進行調優,模型復雜,需要多次迭代,因此LlamaTune 提出基于隨機投影的自動降維技術并且用一種偏差抽樣方法來處理特定旋鈕的特殊值,以及旋鈕值桶化。OtterTune(DNN)針對原有OtterTune系統中GPR高斯過程模型在較大數據集和高維特征向量上表現不佳等問題,將GPR 模型改為DNN 模型,也提出dropout 正則化技術,將高斯噪聲添加到神經網絡參數中。針對OtterTune考慮更多IT堆棧層,導致搜索空間的維度呈指數增長,提出基于上下文高斯過程的CGPBO。Tuneful[10]是對Spark 大數據分析引擎的性能進行優化,解決了之前未從成本效益上進行調優的問題。

第三類為基于RL 的參數調優基數。最早使用RL進行參數調優的系統為CDBTune[11],CDBTune基于深度學習框架,存在調優時間長、多次運行工作負載耗時、不能針對特定工作負載進行調優、神經網絡復雜需要多次迭代時間較長等問題。Hunter[12]、QTune[13]、WATuning[14]等提出一系列解決措施。CDBTune采用DDPG算法,但DDPG沒有考慮工作負載特性。WATuning系統在原有DDPG算法基礎上增加注意力機制。QTune針對CDBTune系統多次運行負載耗時問題,提出DS-DDPG模型,并提供三種數據庫調優粒度。Hunter采用混合結構解決冷啟動問題,并利用遺傳算法生成的樣本預熱DDPG算法。

參數調優系統常見術語的術語表,如表1所示。

表1 數據庫參數調優常見術語Table 1 Glossary of common terms for database parameters tuning

為了幫助研究人員與開發者更好地把握當前參數調優系統的發展狀況,按照使用的技術的不同將參數調優系統分為三個不同的方面,分別對這三個方面做進一步的綜述:

(1)第1章概要介紹數據庫傳統參數調優技術的研究情況以及存在的問題與挑戰;

(2)第2章概要介紹數據庫基于BO 模型的參數調優技術的研究情況以及存在的問題與挑戰;

(3)第3章概要介紹數據庫基于RL 的參數調優技術的研究情況以及存在的問題與挑戰;

(4)第4章概要介紹數據庫參數調優技術的研究情況,并進一步探討數據庫研究的發展趨勢。

1 傳統參數調優技術

傳統參數調優技術主要依靠DBA 的知識與經驗,DBA 通過反復實驗得到統計數據,以此決定配置方案。這種方式本身存在很多不確定性,完全基于啟發式的方法大概率會造成局部最優甚至是更加劣化,在此過程中還需要DBA 掌握大量相關知識,并且在有限資源下,不可能會遍歷所有的空間來找到最優解,需要進行數據庫自動調優[15]。

1.1 輔助決策的參數調優技術

傳統的參數調優技術除了DBA根據經驗手動調參之外,還有一些可以輔助數據庫管理員調參的工具。按照工具使用技術的不同可以分為兩大類:基于規則的參數調優技術和基于經驗模型的參數調優技術[16]。

(1)基于規則的參數調優技術

第一類是基于規則的參數調優技術,它是根據某一個數據庫特定的需求設計出來的。系統根據用戶需求,給出參數調整意見。最常見的基于規則的參數調優技術是MySQLTuner[17],通過收集數據庫狀態信息,根據確定的規則推薦給用戶參數配置。這類調參技術雖然比手動調參不確定性小,但由于它是針對某一特定數據庫需求進行設計,若面對不同數據庫或用戶需求,則需要重新設計規則,普適性較差。

(2)基于經驗模型的參數調優技術

第二類是基于經驗模型的參數調優技術,該方法需要通過大量實驗發現旋鈕與數據庫性能之間的關系,并將結果返回給數據庫調參專家,調參專家通過可視化結果直觀地分析數據庫參數的值,選出符合用戶需求的配置進行調優。但這種方法跟基于規則的參數調優技術類似,也是針對用戶需求進行調優。當數據庫用戶需求發生改變時,該方法按照之前需求推薦的配置則不再適用。調優過程需要經過大量實驗,當使用場景改變時,實驗也需要重新進行,耗費大量資源。Wei 等人[18]提出的一種基于模糊規則的調優工具,主要包括三個階段:首先從自動負載倉庫(automatic workload repository,AWR)中提取參數調優相關數據,利用自動負載倉庫獲取負載、數據庫狀態、表現統計等信息;然后,系統通過在不同配置下重復執行負載,觀察不同配置下系統調優結果,總結出調優相關“模糊規則”,這些模糊規則只針對特定用戶需求,不具有普適性;最后,經過訓練數據得到經驗模型,根據用戶需求進行參數配置推薦。

1.2 基于啟發式算法的參數調優

基于啟發式算法的參數調優技術通過給定提前設置好的規則進行搜索來找出需要進行調優的參數,Best-Config[19]系統使用啟發式算法自動檢測整個參數配置過程。BestConfig系統流程圖[19]如圖2所示。

圖2 BestConfig調優流程Fig.2 BestConfig tuning process

在負載生成模塊(workload generator)中,BestConfig 主要使用benchmark 工具。并且該模塊直接與SUT(system under tune)交互。性能優化模塊(performance optimizer)將抽樣方法DDS(divide and diverge sampling)和優化算法RBS(recursive bound and search)結合起來作為一個完整的解決方案。這也是該調優系統主要的兩個算法。具體流程為:首先將整個N維參數空間離散化,采用DDS抽樣方法進行抽樣,然后將每個參數的取值范圍劃分為k段,每一段隨機取一個值,這樣整個參數空間可以轉化為kN個點組成的樣本空間,并且為了保證抽樣的多樣性,要求每個參數值只能被取樣一次,然后使用RBS優化算法進行優化,在每次抽樣的空間中隨機選取6 個樣本進行測試,得到最好的點,再以最好的點為中心劃分出下一個示例區域這樣迭代,直到不能得到表現更好的點或者達到資源限制為止。

上述所描述的幾種傳統的基數調優方法主要體現了兩種思路:第一種是專家根據經驗給出對于特定場景下的調優規則;第二種探索參數空間進行抽樣,在有限資源下找到表現最好的區域。但是上述兩種思路,無論是專家依據經驗給出的參數調優規則,還是依據抽樣算法來進行參數調優,都不能很好地推薦提高系統性能的參數配置,即只能達到局部最優解。而且每次參數調優都是從頭開始進行實驗配置,不能利用之前的實驗來進一步優化模型,這不僅會浪費大量的資源,也會因為一些條件的限制也往往得不到最優的結果。例如,Best-Config使用啟發式方法從歷史數據中搜索最佳配置,如果歷史數據質量不高或者缺失,則會嚴重影響效果。

2 基于BO模型的參數調優技術

現有的基于BO 模型的參數調優系統基本采用BO模型來建模參數與數據庫性能之間的關系。首先擬合概率代理模型,然后通過最大化采集函數選擇下一個配置來評估?,F階段有眾多學者提出基于BO 模型的系統。基于BO模型的部分調優系統對比如表2所示。

表2 基于BO模型的參數調優技術對比Table 2 Comparison of parameters tuning techniques based on BO

2.1 GPR-OtterTune

數據庫中有成百上千的旋鈕,不同的旋鈕組合制約系統性能。企業會雇傭專門的數據庫管理專家進行調優,但專家往往是根據先前知識與經驗進行調優。并且,使用場景和工作負載會不斷變化,導致企業在系統維護方面投入大量資源,從而導致總體系統管理成本不斷增加。一些科學家在20世紀90年代初就提出實現自動數據庫調優的想法,但并未引起廣泛關注。

卡耐基梅隆大學數據庫研究組開發GPROtterTune[20-22](在下文中簡稱為OtterTune),能夠根據用戶需求自動為數據庫系統的旋鈕找到合適的設置[20-21],且操作較為便捷。OtterTune系統是根據對之前數據庫系統調參的知識來推薦新的參數配置,這個過程由系統自動獲取。與OtterTune不同,iTuned不會使用從以前的調優會話收集的數據來訓練其GP 模型。文章使用OtterTune 和iTuned 生成的配置對TPC-C 工作負載的OLTP DBMS 進行比較。對比分析得到OtterTune 在MySQL 的前30 min 和Postgres 的前45 min 內找到了這個更好的配置,而iTuned需要60~120 min才能生成為這些系統提供任何重大改進的配置。所以OtterTune充分利用之前數據可以節省大量調優時間。具體做法為:OtterTune 將之前調參時所用的數據記錄到知識庫,然后用這些數據去構建模型,進而根據用戶需求推薦給新的數據庫系統參數配置。OtterTune分為客戶端和服務端。OtterTune 的客戶端安裝在目標數據庫所在機器上,也就是用戶需要調參的數據庫所在的機器上,然后收集目標數據庫的統計信息,并上傳到服務端。服務端一般配置在云上,它收到客戶端的數據,訓練機器學習模型并推薦參數文件。在此過程中客戶端接到推薦的參數配置文件后,配置到目標數據庫上,測量其性能。以上步驟可以重復進行直到用戶對OtterTune推薦的參數文件滿意。當用戶配置好OtterTune 時,它能自動地持續推薦參數文件并把所得結果上傳到服務端可視化出來,而不需要數據庫管理員的干預,這樣能大大簡化數據庫管理員的工作。

首先在數據預處理階段,使用因子分析(factor analysis,FA)的降維技術,將度量減少到更小的因子集合。然后將FA輸出結果以散點圖的形式輸入到k-means聚類算法中,k-means 聚類算法將相鄰的因素進行分組,從每組中選取一個具有代表性的指標,達到降維的目的。

利用上述方法將度量降維后,繼續計算對目標函數影響最大的旋鈕的排序列表。論文使用了Lasso[23]特征選擇方法,其中旋鈕數據作為輸入X,輸出的是結合已經修剪過的度量的目標數據。Lasso 在X和Y之間的回歸過程中確定了重要的旋鈕順序。它從一個高懲罰設置開始,其中所有的權重都為零,因此在回歸模型中沒有選擇任何特征。然后減少懲罰,重新計算回歸,并跟蹤每個步驟中將哪些特征添加回模型。旋鈕在回歸中首次出現的順序決定了它們對目標指標的影響程度。得到旋鈕順序后,需要在調優會話的每次迭代結束時生成新的配置建議。第一步是確定OtterTune過去調優的工作負載中哪一個與當前工作負載最相似。它利用先前數據來引導新的配置。OtterTune 基于GPR 算法,采用高斯過程作為先驗函數,計算測試點與所有訓練點[24]之間距離。該算法利用核函數來預測測試點的值和不確定度。OtterTune系統流程圖[20]如圖3所示。

圖3 OtterTune調優流程Fig.3 OtterTune tuning process

雖然OtterTune系統可以自動為DBMS找到合適的旋鈕配置,但面對大數據集和高維特征向量可能表現不佳。并且大數據場景下無法進行并行處理,嚴重影響系統性能。

2.2 DNN-OtterTune

OtterTune 的高斯過程模型在大數據集和高維特征向量上表現不佳[5],為了改正這一點,文獻[4]將GPR 模型改為DNN模型[25-26]。DNN依賴于對輸入應用線性組合和非線性的深度學習算法。DNN模型的網絡結構有兩個隱含層,每層有64個神經元。所有各層均以ReLU作為激活函數完全連接。DNN-OtterTune 實現了一種稱為dropout正則化的技術,以避免模型過擬合,并提高其泛化[27]。DNN 還在旋鈕推薦步驟[28]期間將高斯噪聲添加神經網絡的參數中,以控制勘探與開發的數量。DNN-OtterTune 通過降低噪聲的規模,在整個調優過程中提高了數據的利用率。

文章對比了GPR、DNN、DDPG 和DDPG++4 個算法,并給處理生成的優化配置在3 個VM 上的平均性能改進的數據。經過對比分析GPR 在4 個算法中總是快速收斂,但是GPR 很容易陷入局部極小值。DNN 的性能是整體最好的,而DDPG和DDPG++需要更多的迭代次數才能達到好的優化性能。

DNN-OtterTune 雖然能夠解決OtterTune 高斯過程模型在較大數據集和高維特征向量上表現不佳的問題,但DNN神經網絡過于復雜,不利于擴展。

2.3 RelM分布式系統

近些年,由于數據規模和業務訪問負載越來越大,集中式數據庫逐漸出現性能瓶頸,需要分布式數據庫系統進行支撐。Kunjir等人[5]研究在現代分布式數據處理系統中自動調整內存分配問題,提出RelM算法,大大降低基于BO[29]和DDPG[30]等算法探索最優參數配置的開銷。RelM系統能夠在現代分布式數據處理系統上運行的應用程序上自動調整內存分配,流程圖如圖4所示。

圖4 RelM調優流程Fig.4 RelM tuning process

首先應用程序配置文件交由統計數據生成器處理,生成一組統計信息。然后枚舉器模塊通過初始化器和仲裁器運行每個容器大小配置。給定容器大小和應用程序配置文件中的統計信息,初始化器模塊獨立優化每個池的內存池,設置初始值。仲裁器仲裁初始化器分配給各個池的內存,以確保可靠性和低GC開銷,并計算生成配置的效用分數。最后,選擇器根據其效用得分對每個探測容器配置的最佳設置進行排序,并返回最佳設置作為最終建議。

RelM 不是直接對高級調優目標(如延遲)進行建模,而是針對內存配置對系統資源利用效率和執行可靠性的影響進行建模,因此能夠使用極少量(1~2次)的文件配置快速調整內存管理選項。RelM 核心是一組模型,用于估計應用程序中各種競爭內存池的需求。使用這些模型,保證了一個安全的、高資源利用效率的配置。RelM能夠理解基于內存的數據分析系統中的內存管理中多個級別算法之間的交互,并使用它們構建分析解決方案,以自動調整內存管理旋鈕。RelM 提出引導貝葉斯優化(GBO)[31],GBO 為被測應用程序提供一個配置和一組配置統計信息。該模型輸出一組導出的度量,除了用于優化的原始配置選項之外,還使用簡單的分析模型導出額外的度量,目的是從更昂貴的區域中分離出配置空間最合適的區域。與SBO[31]相比,GBO不需要專家通過在調整時觀察系統性能來設計參數模型,而是使用白盒模型簡化此過程,并且從可靠性、效率等相關的應用程序配置文件導出度量后插入到BO模型中,進而適應于各種類型的工作負載。為了加快最優配置的探索效率,RelM 提出一種基于序列型優化方法:SMBO改進的策略[32],能夠在擬合代理模型和使用它推薦下一個探針之間進行迭代。

RelM 是分布式框架,解決了大數據場景下普通調優系統調優性能的問題。但是泛化能力有限,不能較好地適應新的工作負載。

2.4 OnlineTune

OtterTune利用BO模型,通過平衡探索和開發來推薦參數配置;CDBTune采用強化學習,通過試錯來學習調優策略。它們可以找到接近最優的配置,但存在50%~70%的調優結果比默認配置更差[6]。在配置過程中,配置的總內存(例如緩沖池、插入緩沖區、排序緩沖區等)大于機器的物理容量,調優甚至會導致兩次系統掛起。這種不好的建議會給在線數據庫帶來巨大的風險。

考慮到數據庫負載動態變化以及安全性,Zhang 等人[6]提出了OnlineTune,能夠適應動態負載,并且保證每次調優采樣的安全性。OnlineTune 將在線調優問題定義為具有安全約束的上下文bandit 問題,進而提取工作負載和底層數據的特征,形成上下文特征化模型。OnlineTune采用上下文貝葉斯優化技術來優化數據庫,以適應不斷變化的環境。針對云環境中海量數據對OnlineTune可擴展性的影響,提出了一種有效降低計算復雜度的聚類和模型選擇策略。該方法對觀測值進行聚類,每個聚類中的觀測值個數可以限制在一個常數P之下。OnlineTune 基于聚類擬合多個上下文GP,并學習用于模型選擇的決策邊界。首先基于上下文特征,執行DBSCAN聚類算法[33],為每個特征獲得聚類標簽li。對于每個聚類,OnlineTune使用其觀察結果擬合上下文GP模型。為了選擇模型,使用SVM來學習非線性決策邊界,除了提高可擴展性之外,這種聚類從GP模型的訓練集中排除了一些觀察,防止了“負遷移”[34]。OnlineTune結合黑盒和白盒知識來評估配置的安全性,黑盒就是用上下文GP 預測安全性,由于是對每個子集建立的GP,模型比全局GP更精準。白盒來源于領域知識、DBA 經驗,或者一些啟發式規則。OnlineTune 使用MysqlTuner[17]實現白盒助手。但白盒有時并不會根據反饋進行進化,導致局部最優的陷阱。當白盒拒絕配置而黑盒推薦配置時,采用放松策略,為每個規則定一個沖突計數器,如果沖突達到閾值,將忽略規則并推薦有爭議的配置,大的閾值增加了白盒規則的可信度。文章通過子空間自適應提出安全的勘探策略,在很大程度上降低了應用有害配置的風險。OnlineTune 系統流程圖如圖5所示。

圖5 OnlineTune調優流程Fig.5 OnlineTune tuning process

OnlineTune首先通過上下文特征捕獲動態因素(如工作負載及其基礎數據),獲得上下文。然后從具有相似上下文的聚類中選擇適合的上下文GP模型。對于新擬合的模型,以最優估計配置為中心初始化子空間。否則,會根據調優歷史對子空間進行調整,其次對適應子空間進行離散化,構建候選集。OnlineTune基于模型的下界估計來評估候選對象的安全性,形成一個安全集。它還會用白盒來排除不安全的配置。如果啟發式白盒從安全集合中排除了最優配置,OnlineTune通過最大化獲取函數或探索子空間的安全邊界,從安全集合中選擇一個配置。最后,將配置應用于在線數據庫并評估其性能。文章還從基準測試和現實應用中對動態工作負載進行評估。結果表明,與目前的最先進的方法相比,OnlineTune 在減少了91.0%~99.5%不安全推薦的同時,提高了14.4%~165.3%的累積改進。

OnlineTune 解決了OtterTune 系統調優時間長,不能反應真實負載的缺點,并且具備在線調優以及保證在線調優安全性的能力。在線調優可以實時根據工作負載的變化來進行調優,更好地適應數據庫動態性的特征,但調優時間較長。如果將在線調優與離線調優相結合,利用離線過程可以使系統在目標DBMS的副本上探索更多配置,重用歷史工作負載,用其來收集用于在線調優的觀察結果,可以大大減少調優時間。

2.5 CGPTuner

OtterTune 利用過去的經驗并收集新的信息來調優DBMS配置加速新工作負載下的搜索過程。然而,要做到這一點,需要收集大量歷史數據,并且所有實驗都應該包含所有可用參數。Cereda等人[7]提到由于搜索空間的維度呈指數增長,收集知識庫的復雜性也會增加,它會變得越來越復雜。因此,提出CGPTuner 系統[7],它不需要任何初始的知識收集,并且能夠在30 次迭代之后提出性能良好的配置。

CGPTuner 是一種基于CGPBO[35]的自動配置調優器,CGPBO 是貝葉斯優化框架的上下文擴展。貝葉斯優化已經成功地應用于性能自動調優問題[11,31,36-38]。CGPTuner 在考慮多層IT 堆棧和當前工作負載的同時,成功地調優了IT系統的配置,更重要的是,它不依賴于歷史知識庫。首先,在IT堆棧中,DBMS處于整個IT棧的最頂端,下面的JVM(Java virtual machine,Java 虛擬機)、操作系統的配置調優也都會影響DBMS 的性能。其次,DBMS 的性能還跟它所處的工作負載有關,即系統需要是實時、在線地自動調優。再次,目前軟件版本更新得比較快,版本更新會修改其可用的參數,那么從先前的知識庫中重用信息就讓調優的問題變得更加復雜,因此要求系統不再利用先前的知識庫。

基于上下文的高斯過程優化是指某些工作負載下的優化是相關的,比如工作負載w下得到的數據,可能為另一工作負載提供一些有用的信息。CGPTuner所提模型的優化目標就是在給定工作負載w下,找到一個配置向量x,將其應用在IT 棧上面來優化系統的性能指標y。調優器能夠利用先前所有迭代的x、w和y,但不需要其他額外的知識。

文章用兩個指標來衡量在線與離線兩種方式下的調優器的性能,分別是在線調優的累計獎勵calculative reward(CR)和離線調優的迭代最佳值iterative best(IB)。若CR的值為0,則表示與默認配置性能相同,若CR 的值為負數,則表示所找的配置不如默認的配置。IB值記錄了當前迭代下記錄的最高的標準性能改進,它反映了調優器快速探索并且找到良好配置的能力。文章結果表明:從IB 值的變化可以得到CGP 相較于另外兩種在線調優算法,能更快找到良好的配置,并且找到的配置質量高于另外兩種算法;從CR 值的變化情況可以看到,OpenTuner 和BestConfig 的累計獎勵值在持續地負向增加,也就是說這兩種算法找的配置始終比默認的設置更差,而CGPTuner在第三天開始CR值開始正向增加,并且在第六天累計獎勵的值開始為正值并不斷增加;在另一種工作負載模式上的結果類似。

除了從優化的角度比較了各種算法外,還從吞吐量和內存消耗的角度來比較了三種算法,結果表明CGP在大多數工作負載上都能獲得更好的結果。

CGPTuner 解決了OtterTune 隨著搜索空間維度呈指數增長,收集大量歷史數據復雜性增加的問題。CGPTuner 不依賴于歷史知識庫,并且經過多次迭代后提出較優配置。但CGPTuner在每次迭代后收集數據集變得越來越復雜,并且每次都進行單一的評估會造成時間復雜度過大,所以研究如何進行可重復評估是非常重要的。

2.6 ResTune

現有數據庫調優方法[11,13,38-39]主要集中在提高吞吐量和延遲率,而沒有同時優化資源使用和SLA(service level agreement)。iTune[38]和OtterTune[40]使用高斯進程調優旋鈕,只實現高吞吐量。CDBTune[11]和QTune[13]使用強化學習方法訓練策略模型來推薦好的旋鈕,但是這需要很長時間來學習模型[6]。另一方面在重復地使用工作負載以迭代地學習模型過程中,即使最先進的系統[11,40]也需要成百上千次的迭代才能找到理想配置,所以系統應該盡量縮短調優時間。

ResTune系統調參的目標是同時考慮優化資源使用率和性能,由于TPS(transactions per second)會被客戶端的request rate所限而達不到峰值性能[8]。因此,需要找出資源利用率最小的數據庫配置參數,并且滿足SLA。此外,優化DBMS系統,例如降低高資源利用率,可以用于在線性能故障排除。高利用率可能會嚴重影響系統可用性。通過將預算減少到數十次迭代來加速調優過程,ResTune 利用從調優其他任務中收集的歷史數據,并將經驗轉移到調優新任務中。

文章在多個場景下對比了ResTune 和其他SOTA(state-of-the-art)系統的性能與速度。首先,在單任務場景下,文章選定CPU 利用率作為優化目標,驗證了ResTune 解決帶SLA 限制的優化問題的效果。測試了Sysbench、Twitter、TPC-C 和兩個真實的工作負載:Hotel Booking 和Sales,實驗得出,ResTune 方法在所有負載上都可以得到最佳效果與最佳效率。

文章還測試了不同機器硬件之間的遷移效果,得出:元學習算法使得整個ResTune 的調參過程能在30~50步左右完成,而非遷移場景通常需要幾百個迭代步。

除測試CPU資源外,還測試了內存資源、IO資源的參數調優效果,得出:對于IO 資源優化調參任務,Res-Tune 降低了84%~90%IOPS,對于內存資源優化調參任務,ResTune將內存利用從22.5 GB下降至16.34 GB。

ResTune 將該問題定義為具有約束的優化問題,其中約束常量可以設置為默認配置參數下的TPS 和延遲值。ResTune 將優化資源使用和滿足SLA 轉換為約束貝葉斯優化問題。與傳統的貝葉斯優化算法相比,這里使用了受限EI 函數,將受限信息添加到常用的EI 效用函數(acquisition function)中。另一方面,為了更好地利用現有數據,ResTune 設計了一個結合靜態權重和動態權重的高斯加權模型。通過集成歷史的高斯過程模型,得到目標工作負載代理函數的加權平均值。

ResTune 調參任務的具體流程如下:當一個調參任務開始后,系統首先對目標數據庫進行拷貝,并收集一段時間內的目標工作負載到用戶環境用于未來的回放。在每一輪迭代中,目標任務首先進入元數據處理模塊(meta-data processing)模塊,該模塊在調參任務初始啟動時,元數據處理模塊分析目標任務的工作負載,使用TF-IDF方法統計SQL保留字作為目標任務的特征向量(meta-feature)。在每輪迭代中,元數據處理模塊以歷史觀察數據為輸入,經過歸一化處理后,對資源(CPU、memory、IO 等)利用率、TPS、Latency 擬合高斯模型,作為目標任務的基模型。最終得到meta-feature 與base model作為knowledge extraction模塊的輸入。

知識提?。╧nowledge extraction)模塊負責計算當前任務與歷史任務base model 集成時的靜態與動態權重,并對base model 進行加權求和得到meta model,在該模塊中為了提取與利用歷史知識,ResTune 提出采用高斯模型加權求和的集成方式,即元模型M的關鍵參數u由基模型加權計算得到。在計算基模型權重時采用靜態與動態兩種方式。在初始化時,權重的計算采取靜態方式,以特征向量作為輸入,通過預訓練的隨機森林,得到資源利用率的概率分布向量,最終以概率分布向量之間的距離作為任務相似性,決定靜態權重。當數據量充足后,ResTune使用動態權重學習策略,比較基學習器的預測與目標任務的真實觀察結果之間的相似程度。使用動態分配策略,權重會隨著對目標工作負載的觀察次數的增加而更新。通過這兩種策略,最終得到元學習器,作為經驗豐富的代理模型。

在旋鈕推薦(knobs recommendation)模塊,根據meta learner推薦一組參數配置。采集函數使用了帶限制的EI 函數(constrained EI,CEI),其根據限制情況重寫了EI 的效用函數,當參數不滿足SLA 限制時效設置為0,且當前最佳參數定義為滿足SLA 限制的最佳參數。CEI 采集函數能夠更好地引導探索滿足限制的最優區域。

目標工作負載重放(target workload replay)模塊對推薦參數進行驗證,并將結果寫入目標任務的歷史觀察數據。目標工作負載回放模塊首先推薦參數應用在備份數據庫上,并觸發工作負載的回放,經過一段時間的運行驗證后,驗證結果(包括資源利用率、TPS、latency)與推薦參數將一起寫入目標任務的觀察歷史。

以上訓練過程重復若干迭代步,當達到最大訓練步或提升效果收斂終止。目標任務訓練結束后,ResTune會把當前任務的meta-feature與觀察數據收集到數據存儲庫(data repository)作為歷史數據。

ResTune 開辟了數據庫調優的新方向,它改變了傳統調優策略單純以延遲率與吞吐量為指標,而是提出了在優化延遲率與吞吐量的同時,通過提升資源利用率來提高系統調優性能。但目前ResTune 調參功能對用戶來說是一種離線操作,且相對繁瑣。

在線動態調參技術能夠緩解離線操作的問題,但具有更高的要求。首先,參數調優效果要求穩步提升,不能讓系統運行時出現性能猛烈的下降,不能影響線上實時的服務;其次,為了保證線上穩定性和調節過程快速收斂,在線動態調參需要針對不同的工作負載自動選擇關鍵的相關參數進行調節;最后,目前的工作假設用戶負載變化不頻繁,一旦用戶負載變化就需要重新進行調參。為了提高用戶體驗,還要結合工作負載的檢測支持自適應的調參服務。

2.7 LlamaTune

基于ML的調優方法分兩種:在選定基準上執行預先訓練并傳遞(或微調)給新客戶工作負載的知識(例如,OtterTune[3]和CDBTune[11]),以及通過使用優化器迭代選擇配置[7,13,38],并與它們一起運行工作負載來直接調優新客戶工作負載。這些配置優化器中使用的算法需要利用之前收集到的知識。Kanellis 等人[9]想要令人在不使用任何先驗知識的情況下,且不需要將旋鈕進行排序,通過合成旋鈕的方法找到重要旋鈕進行調優,因此提出LlamaTune。LlamaTune調優流程如下:首先,優化程序使用當前的知識庫,得到能夠用提高性能的配置,運行DBMS 實例??刂破髡{用向DBMS 饋送查詢的工作負荷,工作負荷通常運行若干,一旦工作負荷執行完成,控制器收集性能數據和其他相關度量,并將它們轉發到知識庫,然后用觀察結果更新知識庫。Llama-Tune系統流程圖如圖6所示。

圖6 LlamaTune調優過程Fig.6 LlamaTune tuning process

LlamaTune 利用隨機低維投影方法[41],配置空間從所有維度(D)到更低維度子空間(d)的投影,也就是對于用戶提供D維輸入配置空間XD,使用某個d維空間設計一個近似Xd,其中d?D,它可能包含至少一個點p′∈Xd,可以產生接近最優的p*∈的性能XD。也就是構建Xd、XD兩個空間之間的映射,即每個p∈XD都可以通過投影映射到某個點p′∈Xd。換句話說,如果低維空間大于目標函數的有效維度,則可以僅通過調整較小空間來實現接近最優的性能,然后使用優化器調整更小的子空間。該空間作為輸入給出到BO[7,37-38,41]優化器。

對于上述描述,提出了合成搜索空間(synthetic search spaces)的方法,在之前系統中,一個旋鈕往往對應一個維度,這樣使每個維度都有一定實際意義。然而維度的意義對于優化器來說不是重要的方面,因此提出了合成搜索空間方法,也就是人工合成維度,將多個維度合并成一個維度,合成旋鈕的一個值可以決定多個旋鈕值,雖然人工合成旋鈕本身沒有意義,但是可以實現降低維度,同時避免了識別重要旋鈕的需要。為了處理特殊值具有不同行為的旋鈕,LlamaTune系統還對特殊旋鈕的值進行處理,將數值過大的離散型旋鈕進行桶化處理,對于含有特殊值的旋鈕用偏置采樣的方法處理。

在實驗中,文章使用了6 個具有不同特征的OLTP工作負載,并將LlamaTune 與普通的SMAC 進行對比。首先,LlamaTune 達到基線SMAC 最佳配置平均快了5.62倍。其次,與普通SMAC相比,LlamaTune可以提高所有工作負載的平均最終吞吐量(100次迭代后),平均提高7.13%。TPC-C和SEATS這兩個復雜的OLTP工作負載都顯示出6%~7%的增長。最后,文章還觀察到LlamaTune 在YCSB-A、TPC-C 和Twitter 這3 個工作負載上都優于基準SMAC。

LlamaTune 系統改變了之前調優系統的框架,沒有將旋鈕進行排序,而是用一種隨機低維投影的方法將多個旋鈕合成為一個旋鈕,解決了通過排序方法選擇旋鈕準確性低的問題。但LlamaTune系統未能在Linux系統上進行調優,擴展性較差。

2.8 Tuneful

Fekry等人[10]對實際配置調優及其在數據分析框架中的部署進行了分析,提出調優成本攤銷模型,并論證了該模型在調優經常性工作負載時的優勢,根據不同工作負載集提供全面的增量調優解決方案。該模型是通過Gini評分作為指標進行旋鈕漸進式選擇,逐步縮小配置空間。與OtterTune 類似,同樣采用工作負載映射框架來跨任務傳遞知識,提出Tuneful 模型。在重要參數調優操作上,采用執行敏感性分析(SA)[42]。每一輪SA中,都會刪除一些低影響參數,以便在下一輪獲得高影響參數的更好信息。首先使用隨機森林回歸(RFR)構建一個元模型來預測給定配置的執行成本,與單一學習模型[43]相比,提高了預測精度。Tuneful 利用高斯過程(GP),GP 能夠使Tuneful 快速對不同配置下的執行成本進行建模。在相似度分析上Tuneful采用了一種相似感知的調優方法,以進一步適應對高效配置調優的需求。

Tuneful的設計是為了避免昂貴的離線階段進行重要參數的識別或調優,將計算所有內容作為增量優化的一部分。文章通過在兩個不同的服務提供商提供amazon web services(AWS)[44]和谷歌cloud(GCP)[45]兩種云環境進行大量的實驗來說明它的適用性。并利用所獲得的經驗教訓定義了一個實用的自動化優化框架。該系統主要由3個組件組成,分別是性能分析配置器(significance analyzer)、成本分析器(cost modeler)和相似度分析器(similarity analyzer),由該系統的管理者(tuneful manager)控制。具體流程為:首先在搜索階段的開始,性能分析配置器選擇能快速探索某一特定工作負載的影響參數的配置,成本建模器就可以接管并構建一個低維模型。然后,在調優新工作負載時,相似度分析器通過重用現有信息進一步降低了探索成本。當工作負載提交執行時,Tuneful建議使用由性能分析配置器生成的探索性配置,或者使用由成本建模器生成的調優配置,再或者根據由相似度分析器生成的工作負載相似性從現有模型開始調優。執行之后,性能和成本指標被反饋到Tuneful,然后它們被用來更新下一個配置的選項。隨著時間的推移,相似度分析器能夠匹配越來越多的工作負載,這大大提高了調優速度。最后文章進行了實驗分析,證明了當數據分析工作負載在動態環境中執行時,增量配置調優是正確的方法。

文章對比了Opentuner、Gunther、Random Search 與Tuneful 不同調優算法查找最優配置的搜索時間,結果表明Tuneful在4個基準測試上用時都是最短的。

Tuneful雖然解決了之前未從成本效益上進行調優的問題,但Tuneful不適合特定的云場景。

2.9 應用場景分析

OtterTune(GPR)適合低維數據集自動調優,它使用GPR 框架,會利用之前知識庫中的工作負載,在之后的調優過程中,工作負載相似則可直接使用。OtterTune對每個支持DBMS 版本總結了一份“旋鈕”黑名單,包括了對調優無關緊要的部分(比如保存數據文件的路徑),或者那些會產生嚴重或隱性后果(比如丟數據)的部分,確保調優能夠提高系統性能。

OtterTune(DNN)是OtterTune 的改進版本,解決了OtterTune只能在低維或者少量的數據集上進行調優的問題,適合大數據集和高維數據自動調優。

RelM 適用于分布式數據庫數據處理系統,它可以自動調整內存分配問題。降低基于BO[29]和DDPG[30]等算法探索最優參數配置的開銷。

OnlineTune使用的在線調優,能夠適應變化較快的工作負載,可以在不斷變化的云環境中安全地調整在線數據庫。OnlineTune適用于對安全性要求較高、工作負載變化較快的云環境中使用。

CGPTuner 適用于沒有任何歷史知識的數據庫,它解決了之前OtterTune系統需要收集歷史知識的問題。

ResTune 優化資源的使用與性能,找出資源利用率最小的配置參數,并且能夠讓它滿足相關協議。在資源較為緊缺的情況下,可以考慮使用此種方法。

LlamaTune 沒有像其他系統一樣使用旋鈕重要度排序的方法,而是創新將眾多旋鈕進行合成,形成一個新的旋鈕,這樣避免了排序選出最重要的幾個旋鈕造成準確率下降的問題。LlamaTune旋鈕選擇準確率較高。

Tuneful 對分析引擎進行調優,適用于工作負載變化較快的Spark 大數據分析引擎的性能優化,能夠在最小時間內達到最優性能。該方法考慮了環境的動態特征,對不同的工作負載,采用了不同的ML技術,提供全面的增量調優解決方案,并且在實踐中能夠以成本效益方式調優工作負載。

3 基于RL的參數調優技術

傳統機器學習具有較強的泛化能力,使得這類調參系統在不同數據庫環境下都有較好表現。此外,它能夠有效利用在歷史任務中學到的經驗,應用在未來調參工作中。但是,這類方法主要采用一種管道式架構,上一階段獲得的最優解并不能保證是下一階段的最優解,而且不同階段使用的模型未必可以很好地配合。其次,它需要大量高質量的樣本用于訓練模型,而這些樣本是很難拿到的。比如,數據庫表現受磁盤容量、CPU狀態、負載等很多因素的影響,很難去大量復現相似的場景。此外,僅僅使用高斯回歸等模型很難優化數據庫調參這種有高維連續空間的問題。

針對上述傳統機器學習調參技術的缺點,引入強化學習(RL)。RL提供了一種框架,使智能體(agent)能夠在特定場景(environment)中采取行動,并按離散時間在與環境的交互中學習。與傳統監督學習不同,強化學習不需要大量的標注數據。相反,通過不斷試錯和對智能體懲罰和獎勵,反復優化行為選擇的策略,以最大化目標函數。通過探索和開發機制,強化學習可以在探索未知空間和開發現有知識之間做出權衡。表3 給出基于RL的參數調優方法對比。

表3 基于RL參數調優方法對比Table 3 Comparison of tuning methods based on RL parameters

3.1 CDBTune

由于不同的數據庫實例和查詢負載的不同,這使得數據庫管理員(DBA)的工作變得非常困難?,F有的自動DBMS配置調優解決方案有幾個局限性。首先,它們采用流水線學習模型,不能以端到端的方式優化整體性能。其次,它們依賴于難以獲得的大規模高質量訓練樣本。再次,現有的方法不能為大量的旋鈕推薦合理的配置在如此高維連續空間中的旋鈕。在云環境下,現有的方法很難適應硬件配置和工作負載的變化,適應性差。針對上述問題,Zhang 等人[11,46]基于DRL 提出端到端的數據庫管理系統配置自動調整系統CDBTune,該系統能夠在復雜云環境中對旋鈕設置進行重新調整。CDBTune使用深度強化學習(RL),利用深度確定性策略梯度法(deep deterministic policy gradient,DDPG)在高維連續空間中尋找最優配置?;谠囧e思想,以有限樣本學習旋鈕設置,完成初始訓練,減少了采集大量高質量樣本的必要性。并且采用RL 中的獎賞-反饋機制代替傳統的回歸,實現端到端學習,加快了收斂速度提高了在線調優的效率。CDBTune 系統優先體驗回放,以加速模型的收斂,并探索如何減少耗時的重啟時間,從而在實際使用中為用戶提供更好的體驗。

CDBTune 系統是最早采用上述的深度確定性策略梯度算法的。該算法是在連續動作空間環境中搜索最優策略的一種深度強化學習算法。DDPG由3個組件組成:actor、critic 和replay memory。actor 根據給定的狀態選擇一個動作(例如,對一個旋鈕使用什么值)。critic根據狀態對選定的動作(即旋鈕值)進行評估,并且提供反饋來指導actor。actor 的輸入是DBMS 的度量,輸出推薦的旋鈕值。critic將之前的度量和推薦的旋鈕作為輸入,輸出一個Q值,DDPG神經網絡的Q值計算的是對未來所有預期獎勵的疊加。replay memory存儲按預測誤差降序排列的訓練數據。對于每個旋鈕k,DDPG構造一個元組。在接收到一個新的數據時,CDBTune首先通過比較當前、歷史和初始目標值來計算獎勵。訓練時從memory中獲取一個小批量排名靠前的tuple,并通過反向傳播更新actor 和critic 的權重。最后,CDBTune 將當前度量m輸入actor 以獲得下一旋鈕k_next的推薦。

上述CDBTune調優的工作過程主要分為離線訓練和在線調優兩個步驟。離線訓練就是用一些標準的負載生成器對數據庫進行壓測,邊收集訓練數據,邊訓練一個初步的配置推薦模型。當用戶或者DBA有數據庫性能優化需求時,可以通過相應的交互接口提出在線調參優化請求,此時云端的控制器通過給智能優化系統發出在線調參請求,并根據用戶真實負載對之前建立好的初步模型進行微調,然后將模型微調后推薦出的相應的參數配置在數據庫中進行設置。反復執行上述過程,直到待調參的數據庫性能滿足用戶或系統管理員的需求即停止調參,如圖7所示。

圖7 CDBTune調優流程Fig.7 CDBTune tuning process

在多種不同負載和不同類型的數據庫下進行的大量實驗證明,CDBTune 性能優化結果明顯優于目前已有數據庫調優工具和DBA 專家。即使在云環境下,用戶數據庫內存、磁盤大小發生變化或負載發生變化(類型不變)的情況下,實驗證明CDBTune依然保持了較好的適應能力。文章將CDBTune 與BestConfig、DBA 和OtterTune 進行對比,發現CDBTune 比其他三者的吞吐量更高,延遲率更低。

CDBTune 是使用RL 進行調優的先驅,改正了基于BO 算法推薦配置有一定誤差,以及需要大量高質量經驗數據進行模型訓練的缺點。CDBTune 使用DDPG 算法,該系統能夠在復雜云環境中對旋鈕設置進行重新調整,并且利用DRL 對系統旋鈕進行調優的工作具有開創性,但在結構設計上還需要進一步改進。

首先,CDBTune直接使用DRL與系統交互,沒有利用當前的工作負載特性,其次,CDBTune 只為3 種工作負載(只讀、只寫和讀寫)提供粗粒度調優,無法為特定查詢工作負載提供細粒度調優。

3.2 Hunter

CDBTune 需要較長的調優時間才能通過自我學習達到較高的性能。對此,CDB團隊提出了Hunter[12]能夠在保證調優效果的前提下極大地縮減調優耗時。

Hunter 是一個用于CDB 的在線調優服務。首先,Controller 與目標DBMS、調優系統和用戶交互。它由Actor 和CDB 組成,其中Actor 被設計用于從DBMS 收集運行時信息,克隆CDB 上的用戶實例,并管理克隆CDB上的并行執行。而在經典架構中,例如CDBTune,Controller只與單個CDB實例進行交互。而Hunter中的Controller 管理一個Actor 集合,每個Actor 管理一個從用戶實例克隆的CDBS 集合。改進的混合調優系統Hunter,主要包含樣本生成、搜索空間優化、深度推薦3個階段。

在樣本生成階段,由于基于學習的調優方法在訓練初期都有著調優效果差、收斂速度慢等問題(冷啟動問題)。這些方法面臨冷啟動問題主要是因為樣本數量少質量差,網絡難以快速學到正確的探索方向,或者搜索空間大,網絡結構復雜,學習速度緩慢。為了緩解上述問題,Hunter采用收斂速度更快的啟發式方法(如:遺傳算法(GA))進行初期的調優,以此快速獲得高質量的樣本。啟發式方法雖有著較快的收斂速度,但是卻容易收斂到局部最優,導致最終調優效果不佳。而基于學習的方法卻在較長的調優時間后可以得到較高的性能,但是卻需要較長的訓練時間,速度較慢。Hunter將兩種方法結合,既加快了調優速度,也確保了參數質量,獲得高質量樣本。樣本生成階段是根據目標工作負載和用戶需求,通過GA和規則生成樣本。規則是由用戶或DBA定義的限制,包括哪些旋鈕是固定的,以及其他旋鈕允許調整的范圍。在不同規則下,預訓練的模型很難推薦令人滿意的配置。

在搜索空間優化階段,文章利用樣本生成階段可以獲得較多高質量的樣本,但是卻沒有將其效果充分發揮。Hunter 利用PCA 進行狀態空間降維,隨機森林(random forests)進行參數重要性排序。PCA是一種常用的機器學習的降維方法,可將高維數據降為低維數據的同時保留大部分信息。系統采用累計方差貢獻率來衡量信息的保留度,一般來說,當累計方差貢獻率大于90%時即可認為信息得到了完全的保留。Hunter 選擇貢獻率最大的兩個成分,并以此作為x、y軸描點,以其對應的數據庫性能作為點的顏色(顏色越深性能越低),由此低性能的點可以被兩個成分較為明顯地區分開來。隨機森林可以被用來計算特征的重要性,以數據庫參數為輸入,對應的數據庫性能為輸出訓練隨機森林模型,然后計算各個數據庫參數的重要性,并進行排序。采用不同數量的Top 參數進行參數調優可以看到數據庫最優性能的變化,在一定數量的樣本保證下,TPC-C負載調整20 個參數即可達到較高的性能。總的來說,搜索空間優化階段是將樣本工廠生成的樣本作為輸入,對指標和搜索空間進行壓縮和降維。

深度推薦階段利用之前階段的信息進行維度優化和強化學習預訓練,保證調優效果的同時顯著減少調優時間。具體來說,在深度推薦階段采用深度強化學習(DRL)來進行參數推薦。首先,搜索空間優化的結果會對DRL的網絡進行優化,減少其輸入輸出的維度,簡化網絡結構。其次,樣本生成階段的樣本將加入DRL 的經驗池中,由DRL進行一定程度的預訓練。最后,DRL將基于改進后的探索策略進行參數配置推薦。DRL 的基本結構與CDBTune 類似,為了充分利用高質量的歷史數據,文章修改了其探索策略。為了進一步對調優過程進行加速,Hunter充分利用CDB的克隆技術,采用多臺數據庫實例實現并行化,令整個調優時間更進一步地減少。

文章將CDBTune 與BestConfig、GA(遺傳算法)和OtterTune 進行對比,結果顯示了每種方法在MySQL 上測試TPCC 獲得的最佳吞吐量和最佳延遲曲線。結果表明Hunter能夠在更短的時間內獲得55%~65%的最佳性能。特別是使20個克隆的CDB,Hunter-20能夠在2.5小時內實現最佳性能,這減少了94%~95%的推薦時間。

Hunter 解決了CDBTune 調優時間長的問題,能夠在保證調優效果的前提下極大地縮減調優耗時,但Hunter難以快速判斷性能是否達到“最優”。

3.3 WATuning

Ge 等人[14]提到傳統的參數調優是由DBA 進行的,但DBA 可以調整的旋鈕數量是有限的,很難在全局范圍內找到更好的旋鈕。DBA通常擅長調優他們熟悉的系統類型,并且由于系統可以構建在不同的環境中(如本地或云、CPU、RAM、磁盤),DBA 需要長時間調優不同環境下的系統,嚴重影響調優效率。工作負載通常以dy-namal方式連續變化。因此,不斷變化的工作負載也要求DBA 始終動態地調整旋鈕以獲得高性能。在3.1節提到的CDBTune,是最早使用強化學習來處理調優問題的系統,但它存在很多問題,首先,CDBTune 不能很好地適應工作負載的變化,只提供粗粒度的調優。CDBTune 只對3 種工作負載進行分類(只讀、只寫和讀寫)。其次,CDBTune 重新修復旋鈕需要重新啟動系統,影響系統的穩定性。再次,CDBTune 的核心算法DDPG沒有利使用工作負載特性。

針對上述問題,文章提出了一個基于注意力深度強化學習的調優系統WATuning,該系統能夠適應工作負載特性的變化,高效、有效地優化系統性能,也能夠服務于數據庫以及其他系統。首先,文章設計了WATuning的核心算法ATT-Tune來完成系統的調諧任務。ATT-Tune是在深度確定性策略梯度(DDPG)[30,47]的基礎上設計的。CDBTune[11]的弱點之一是其核心算法(DDPG)沒有使用工作負載特性。所以在核心算法ATT-Tune 中,文章考慮了不同的工作負載對系統內部狀態的影響。并利用深度神經網絡構建注意力機制模塊,生成狀態權重矩陣,使系統在不同工作負載下的內部狀態根據重要性得到不同的權重值。文章使用并改進了CDBTune中應用的獎勵函數,增加了一個公差因子和一個公差間隔,以保證推薦的旋鈕值在實際環境中的可用性。其次,文章將注意力機制模塊和DDPG看作一個整體一起訓練,大大降低了神經網絡訓練的難度。最后,針對實際應用場景,設計了一種動態的自微調方案,使WATuning更符合實際工作負載,從而實現對旋鈕的重新調整,使系統更加使用實際工作負載。

WATuning系統調優流程如下:在訓練階段,首先使用性能測試模塊生成工作負載,并將工作負載應用到系統模塊。然后將工作負載和內部狀態傳遞給控制器,控制器將分類完成的工作負載和內部狀態傳遞給自動調諧模塊。性能測試模塊對系統模塊進行監控,獲取系統的吞吐量和延遲率作為外部度量,并將外部度量傳遞給自動調諧模塊。自動調諧模塊采集上述步驟傳遞的參數并進行訓練,并向系統推薦旋鈕配置。重復上述步驟,直到自動調諧模塊的內部核心算法收斂。

在推薦階段,系統模塊將實際工作負載和狀態傳遞給自動調優模塊,然后自動調諧模塊向系統模塊推薦高性能旋鈕配置。

文章最后對該系統進行實驗,結果表明,WATuning的吞吐量和延遲率要比現有的最優調諧方法CDBTune的吞吐量和延遲率分別提高52.6%和13%。

WATuning 改正了CDBTune 不能很好地適應工作負載的變化、沒有利用對系統參數推薦的工作負載特性等缺點,考慮了不同工作負載對系統內部狀態的影響。WATuning 利用深度神經網絡構建注意力機制模塊,生成狀態權重矩陣,使系統在不同工作負載下的內部狀態根據重要性得到不同的權重值。

3.4 QTune

CDBTune 使用深度強化學習(DRL)通過試錯策略來調優數據庫。然而,CDBTune 需要在數據庫中多次運行SQL查詢工作負載以獲得適當的配置,這十分耗費時間。并且CDBTune 只提供粗粒度的調優(即針對只讀工作負載、讀寫工作負載、只寫工作負載的調優),但不能提供細粒度的調優(即針對特定查詢工作負載的調優)。其次它直接使用現有的DRL模型,該模型假設環境只能受到重新配置操作的影響,不能利用查詢信息。

基于CDBTune 上述不足之處,Li 等人[13]提出了一種基于深度強化學習查詢感知的自動調參系統QTune,從3個方面解決CDBTune中遺留的問題。首先,為了提高參數配置對不同負載的適應能力,QTune在查詢計劃級別對負載特征(如讀寫比例、使用的關系表、執行代價等)進行編碼,對執行開銷做預估計。其次,為了進一步提高調參表現,QTune采用了一種面向調參問題的深度強化學習算法(double-state deep deterministic policy gradient,DS-DDPG),不僅基于Actor-Critic 算法,提高訓練效率,而且在強化學習的狀態特征中綜合負載、數據庫狀態指標、當前參數值等特征,提高調參策略的準確度和適應能力。再次,為了更好地滿足不同用戶對數據庫性能的需求(如低延遲、高吞吐量等),先對所有用戶負載根據參數偏好進行聚類,然后對相同類中的查詢做批量調參和執行,從而平衡吞吐量和延遲兩方面的需求。

對于上述QTune 提出了一種深度確定性策略梯度(DS-DDPG)模型使用Actor-Critic 網絡。DS-DDPG 模型可以根據數據庫狀態和查詢信息學習Actor-Critic 策略,自動解決調優問題。此外,QTune 吸收了SQL 查詢的豐富特性,并為SQL 語句提供了系統的三個調優粒度。第一個是查詢級調優,它為每個SQL查詢找到一個很好的配置。這種方法不能并行運行SQL查詢,可以實現低延遲,但吞吐量較低。第二個是工作負載級調優,它為查詢工作負載找到很好的配置但無法為每個SQL查詢找到好的配置。這種方法能夠實現低吐量但延遲高。第三種是集群級調優,它將查詢集群到幾個組中,并為每個組中的查詢找到一個良好的數據庫配置。這種方法實現高吞吐量和低延遲,因為它可以為一組查詢找到良好的配置,并在每個組中并行運行查詢。因此,QTune 可以根據給定的需求在延遲和吞吐量之間進行權衡,并同時提供粗粒度調優和細粒度調優。文章還提出了一種基于深度學習的查詢聚類方法,根據查詢匹配配置的相似性對查詢進行分類。

QTune系統具體調優流程如下:首先客戶機與Controller交互以提出調優請求。Query2Vector將每個查詢定義為一個向量。它首先分析SQL查詢,從數據庫引擎中提取查詢計劃和每個查詢的估計成本,并使用這些信息生成一個向量?;谔卣飨蛄?,Tuner 推薦適當的旋鈕,然后數據庫根據新的旋鈕值執行這些查詢。調諧器使用深強化模型DS-DDPG 來調整模型,并推薦連續旋鈕值作為新的配置。Tuner還需要使用訓練數據來訓練模型,這些數據存儲在training data 存儲庫中。對于查詢級調優,Query2Vector 為給定查詢生成一個特征向量。調諧器采用這個矢量作為輸入,并建議連續的旋鈕值,系統根據推薦的旋鈕值執行查詢。對于工作負載級調優,Query2Vector為工作負載中的每個查詢生成一個特征向量,并將它們合并成一個統一的向量。調諧器采用這個統一的矢量作為輸入,并建議旋鈕值。對于集群級調優,Query2Vector首先為每個查詢生成一個特征向量,Tuner 學習每個查詢的配置模式,但這個過程代價較高。為了提高性能,文章提出了一種深度學習模型Vector2Pattern,它學習旋鈕的離散值。然后Pattern2Cluster根據離散配置模式對這些查詢進行聚類,得到查詢組。對于每個查詢組,Tuner推薦適當的配置,然后數據庫依據新的旋鈕值在組中執行這些查詢。

文章最后將QTune的性能與數據庫默認設置、Best-Config、OtterTune、DBA以及CDBTune進行對比。QTune在所有情況下都實現了最佳性能。比如:與CDBTune相比,QTune的吞吐量提高了151.10%,延遲減少了60.18%,訓練時間減少了66.15%。

QTune 解決了CDBTune 多次運行負載耗時的問題、不能針對特定查詢工作負載調優以及只提供粗粒度的調優的問題,對DRL 模型進行了改進。首先,QTune吸收了SQL 查詢的豐富特性,并為SQL 語句提供了系統的3個調優粒度(查詢級、工作負載級和集群級)。其次,模型利用查詢特征(工作負載)預測系統內部狀態的變化值ΔS。但是,系統需要收集真實環境中產生的大量的ΔS來訓練一個神經網絡,這是一個耗時的過程。此外,DRL模型中系統的當前內部狀態依賴于以前的狀態。如果對ΔS的預測稍有偏差,則累積的迭代的結果也會出現極大的誤差。因此,對訓練模型的精度要求也極為嚴格。

3.5 應用場景分析

CDBTune 使用端到端的方式優化,并且能夠在復雜的云環境中對旋鈕設置進行調整。Hunter 是CDBTune 的延伸版本,在保證調優效果的同時縮短CDBTune 調優的時間,并且不需要依賴于高質量的訓練樣本,可以為高維連續空間中大量旋鈕推薦合理配置,更適合高維連續空間內進行調優。

WATuning 能夠適應工作負載的變化的特征,修改后的旋鈕值不需要進行重啟系統。系統還可以根據工作負載的變化生成多個實例模型,從而可以針對不同類型的工作負載完成針對性的推薦服務,適合工作負載較多,變化復雜的場景。

QTune 提供了3 種級別的調優:第一種是查詢級調優,它為每個SQL查詢找到一個很好的配置。這種方法實現低延遲,但吞吐量也會低。第二種是工作負載級調優,它為查詢工作負載找到一個很好的配置,可以實現高吞吐量但延遲也高。第三種是集群級調優,這種方法可以實現高吞吐量和低延遲。因此,QTune可以根據給定的需求在延遲和吞吐量之間進行權衡,同時提供粗粒度調優和細粒度調優。QTune 還提出了一種基于深度學習的查詢聚類方法,根據查詢匹配配置的相似性對查詢進行分類。

4 數據庫參數

4.1 服務器設置參數

(1)listen_addresses:指定PostgreSQL服務器監聽的網絡地址。

(2)port:指定PostgreSQL服務器監聽的端口號。

(3)max_connections:限制并發連接的最大數量。

(4)max_locks_per_transaction:限制每個事務所能獲取的最大鎖數。

(5)deadlock_timeout:指定檢測死鎖的超時時間。

(6)vacuum_cost_delay 和vacuum_cost_page_hit:控制VACUUM操作的成本計算和延遲。

4.2 內存和性能參數

(1)shared_buffers:指定共享緩沖區的大小,用于存儲經常訪問的數據塊。

(2)work_mem:指定每個查詢操作使用的內存量。

(3)effective_cache_size:指定系統的有效緩存大小。

(4)data_directory:指定PostgreSQL數據目錄的路徑。

(5)temp_tablespaces:指定用于存儲臨時表的表空間。

(6)max_wal_size和min_wal_size:指定WAL(writeahead log)的最大和最小大小。

4.3 日志和錯誤報告參數

(1)log_destination:指定日志輸出的目標,如文件、控制臺或系統日志。

(2)logging_collector:啟用日志收集器,將日志寫入到指定的日志文件中。

(3)log_rotation_age 和log_rotation_size:控制日志文件的輪換方式。

4.4 安全和身份驗證參數

(1)password_encryption:指定密碼加密算法。

(2)ssl:啟用或禁用SSL/TLS 加密。

(3)pg_hba.conf:配置客戶端身份驗證規則。

4.5 查詢優化參數

(1)effective_io_concurrency:指定磁盤I/O 操作的并發數量。

(2)random_page_cost 和seq_page_cost:用于計算查詢計劃中不同類型訪問的成本。

(3)max_parallel_workers 和max_parallel_workers_per_gather:指定并行查詢執行的最大工作進程數。

(4)max_parallel_maintenance_workers:指定并行維護工作進程的最大數量。

(5)enable_seqscan和enable_indexscan:控制查詢計劃中順序掃描和索引掃描的使用。

4.6 備份和恢復參數

(1)archive_mode 和archive_command:配置歸檔模式和歸檔命令。

(2)wal_level:指定寫入WAL(write-ahead log)的詳細程度。

(3)restore_command:配置恢復命令。

(4)max_wal_senders:指定可用于流復制的最大WAL 發送者數量。

(5)synchronous_commit:指定是否使用同步提交來確保事務持久性。

5 總結與展望

近年來,數據庫參數調優與機器學習結合得到廣泛關注,并取得一系列研究成果。本文首先闡述傳統參數調優存在的問題,然后給出學習式調優方法,包括基于BO 模型的參數調優以及基于RL 的參數調優。機器學習與數據庫參數調優的結合包括3種方式:第一種方式是針對基于DDPG框架的模型,如CDBTune[11]、Hunter[12]等,利用深度強化學習提高參數調優質量;第二種方式是基于高斯的模型,如OtterTune(GPR)[3]、ResTune[8]等;第三種方式是針對分布式環境,如RelM[5],SmartPS[48]等模型,以及使用新的參數服務器框架[49]來解決分布式機器學習問題,能夠提升參數調優的效率[50-51]。最后,本文對數據庫參數調優在如下方面做出展望。

5.1 基于因果推理的參數調優

當前學習式參數調優模型可解釋性差,無法捕捉問題路徑。建議結合因果推理模型進行解決。雖然現在機器學習、深度學習等方面的內容已經被廣泛研究,且應用到日常生活中能夠提高生活質量。上述的數據庫調優系統,目前大多數的研究也與機器學習、強化學習相結合,但機器學習、深度學習模型也不是完美的。其一,很多機器學習、深度學習訓練出來的內容缺乏適用性,也就是缺乏泛化的能力,需要不斷的訓練新方向的內容,才能夠擁有更好的適用性。而因果推理恰恰彌補了這方面的不足,訓練一個模型,能夠根據經驗、規律泛化到另一個模型之中。其二,機器學習普遍存在可解釋性差的問題,可解釋性差導致很多時候不知道如何優化一個模型。因果推理恰恰可以降低機器學習可解釋性差的問題,所以將數據庫學習與因果推理相結合也是一個趨勢。

5.2 并行數據庫參數調優

隨著機器學習的使用越來越普遍,數據規模與業務訪問的負載也越來越大,越來越多的公司企業無法依賴于單個數據庫服務器來支撐起服務。且訓練的數據量和模型的不斷增長,單個服務器也很難進行訓練數據,因此研究分布式數據處理很有必要。目前也有一些學者研究數據庫分布式系統[5,47-48],例如,前文所介紹的REIM[5]研究的分布式系統方面的內容,實現自動內存分配。但有學者指出這些現有的研究大多數基于獨立的服務器,或者搭載在主流的分布式機器學習系統上,并且許多現有的數據庫系統利用并行性可以實現更高的性能[49-50]。在這個趨勢下,研究分布式數據庫的參數調優系統是很有必要的。

5.3 其他數據庫類型性能優化

現代的數據庫系統有很多種類型,如關系型數據庫,非關系型數據庫(NoSQL)以及時序數據庫等。未來研究可以尋找通用的性能優化的方法。對于異構存儲的場景,考慮利用更好的緩存管理與外部池技術,比如可以考慮GPU與NVM等介質加速查詢優化的方法。

5.4 優化云數據庫性能

隨著企業逐漸將數據中心轉移到云環境中,管理分布式數據和配置成為一個非常重要的問題。因此未來研究可以著手研究如何有效的管理分布在云上的數據庫系統,優化數據傳輸的速度,降低復雜度提高可用性等。

5.5 利用數據庫容器技術自動組織數據庫資源

數據庫有效利用資源也是目前很多人研究的重點,目前利用容器技術(如Docker)部署應用程序和數據庫服務已經成為了一種普遍的做法。未來的研究將探索如何利用容器組織數據庫資源,并使用自動化工具進行配置和調整,以提高性能、可移植性和靈活性,提高資源的利用率。

猜你喜歡
數據庫優化模型
一半模型
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
主站蜘蛛池模板: 好紧太爽了视频免费无码| 国产精选小视频在线观看| 五月婷婷丁香综合| 亚洲婷婷六月| 91系列在线观看| 国产成人综合在线观看| 国产乱人免费视频| 久久婷婷色综合老司机| 午夜限制老子影院888| 亚洲成人黄色网址| 成人va亚洲va欧美天堂| 天堂成人av| 国产午夜精品一区二区三| 在线国产毛片手机小视频| 日韩小视频网站hq| 婷婷六月天激情| 国产女人在线视频| 99免费视频观看| 国产成本人片免费a∨短片| 国产亚洲欧美在线人成aaaa| 在线看片国产| 亚洲啪啪网| 亚洲天堂成人在线观看| a天堂视频| 国产成人精品日本亚洲77美色| 精品人妻AV区| 欧洲极品无码一区二区三区| 成人在线不卡视频| 国产精品冒白浆免费视频| 欧美亚洲国产视频| 午夜电影在线观看国产1区| 日本人真淫视频一区二区三区| 在线免费看片a| 久久无码高潮喷水| 免费无码AV片在线观看中文| 国产免费久久精品99re丫丫一| 欧美精品亚洲精品日韩专区| 国产免费久久精品99re不卡| 免费人成黄页在线观看国产| 中国国产A一级毛片| 91青青视频| 欧美国产日韩在线观看| 亚洲第一视频网站| 成人免费视频一区二区三区 | 国产视频a| 欧美成人手机在线视频| 久久不卡国产精品无码| 重口调教一区二区视频| 国产高清毛片| 久热这里只有精品6| 亚洲中文字幕23页在线| 宅男噜噜噜66国产在线观看| 国产毛片高清一级国语| 91精品国产自产91精品资源| 日韩欧美色综合| 色欲不卡无码一区二区| 亚洲天堂啪啪| 久久综合色天堂av| 久久亚洲国产最新网站| a毛片免费观看| 亚洲天堂777| 激情无码视频在线看| 国产福利免费视频| 国产精品性| 99在线观看精品视频| www.91中文字幕| 日韩国产欧美精品在线| 色偷偷一区二区三区| 91久久偷偷做嫩草影院| 97人妻精品专区久久久久| 永久免费av网站可以直接看的 | 国产成人一区在线播放| 国产在线八区| 视频一本大道香蕉久在线播放 | 2022国产无码在线| 亚洲欧美精品在线| 91色爱欧美精品www| 欧美日在线观看| 国产视频 第一页| 国产91小视频在线观看| 精品1区2区3区| 72种姿势欧美久久久大黄蕉|