• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于機器學習的數(shù)據(jù)庫系統(tǒng)參數(shù)優(yōu)化方法綜述

      2024-01-22 10:58:20高宇飛李翠霞陶永才
      鄭州大學學報(工學版) 2024年1期
      關鍵詞:數(shù)據(jù)庫性能智能

      石 磊, 李 天, 高宇飛, 衛(wèi) 琳, 李翠霞, 陶永才

      (1.鄭州大學 網(wǎng)絡空間安全學院,河南 鄭州 450002;2.鄭州大學 計算機與人工智能學院,河南 鄭州 450001;3.嵩山實驗室,河南 鄭州 450046)

      數(shù)據(jù)庫是信息系統(tǒng)用于存儲、分析和管理數(shù)據(jù)的基礎設施,直接影響信息系統(tǒng)的可靠性。數(shù)據(jù)庫中有上百項可調(diào)整的參數(shù),控制著各組件的表現(xiàn),如openGauss的參數(shù)max_process_memory控制數(shù)據(jù)庫節(jié)點上的最大可用內(nèi)存,通過調(diào)整該參數(shù)可為各類緩存分配更大內(nèi)存,減少磁盤讀寫次數(shù),同時避免操作系統(tǒng)內(nèi)存溢出(out of memory,OOM)。

      數(shù)據(jù)庫參數(shù)優(yōu)化面臨以下挑戰(zhàn)。

      (1)參數(shù)空間大。假設有n個參數(shù),每個參數(shù)有k種取值,則可選擇的配置有kn個,若參數(shù)取值范圍為一個連續(xù)區(qū)間,則配置數(shù)目無窮。因此,在高維參數(shù)空間內(nèi)尋找最優(yōu)配置是NP-Hard問題[1]。

      (2)訓練樣本少。為確定一組配置對應的數(shù)據(jù)庫表現(xiàn),需要在數(shù)據(jù)庫上運行較長時間的壓力測試,以獲取吞吐量等性能指標的變化。但是,為保障數(shù)據(jù)庫的穩(wěn)定性,調(diào)優(yōu)時間有限,因此獲取訓練樣本的時間短、數(shù)量少。

      (3)環(huán)境變化多。數(shù)據(jù)庫的性能與軟硬件環(huán)境和工作負載等因素密切相關,在生產(chǎn)環(huán)境中,這些因素隨時可能發(fā)生變化,導致之前的最優(yōu)配置失效,需要針對新的環(huán)境重新優(yōu)化。

      參數(shù)優(yōu)化方法通過自動選擇合適的配置來快速提升數(shù)據(jù)庫的性能,現(xiàn)有數(shù)據(jù)庫參數(shù)優(yōu)化方法可分為專家決策、啟發(fā)式算法、傳統(tǒng)機器學習方法和深度強化學習方法。專家決策基于人工經(jīng)驗調(diào)整數(shù)據(jù)庫,是早期數(shù)據(jù)庫參數(shù)優(yōu)化的主要手段;啟發(fā)式算法將參數(shù)空間離散化,通過抽樣來搜索最優(yōu)解,難以在多項式時間內(nèi)搜索到合適的配置;傳統(tǒng)機器學習算法基于訓練樣本找到數(shù)據(jù)庫狀態(tài)和參數(shù)之間的映射關系,效率較高,但是需要大量高質(zhì)量的訓練樣本;深度強化學習結(jié)合神經(jīng)網(wǎng)絡和強化學習的優(yōu)勢,在高維參數(shù)空間中以試錯的方式進行探索,減少了對訓練樣本的依賴性。

      傳統(tǒng)參數(shù)優(yōu)化方法依賴于人工調(diào)整或啟發(fā)式算法,隨著數(shù)據(jù)庫實例越來越多,場景越來越復雜,傳統(tǒng)的參數(shù)優(yōu)化方法難以取得理想的結(jié)果。隨機森林、支持向量機和決策樹等方法能夠通過歷史數(shù)據(jù)積累“經(jīng)驗”,提升解決問題的能力。但是傳統(tǒng)機器學習模型難以解決像數(shù)據(jù)庫參數(shù)優(yōu)化這樣具有高維連續(xù)空間的優(yōu)化問題。隨著算力的發(fā)展,深度學習和強化學習[2-3](reinforcement learning,RL)為此類問題帶來更好的解決方案。深度學習利用神經(jīng)網(wǎng)絡的學習能力,通過調(diào)整神經(jīng)元之間的連接來模擬數(shù)據(jù)的映射關系,適用于傳統(tǒng)方法難以解決的問題或存在大量訓練樣本的場景。數(shù)據(jù)庫有著復雜的參數(shù)和大量的數(shù)據(jù),為深入學習解決數(shù)據(jù)庫參數(shù)優(yōu)化問題提供了很好的先驗條件。強化學習旨在訓練一個智能體與環(huán)境交互,智能體觀測環(huán)境后根據(jù)策略生成配置,然后根據(jù)環(huán)境的反饋來調(diào)整策略,以提升配置的質(zhì)量。強化學習以“試錯”的方式進行學習,因此不需要預先準備大量的樣本,深度強化學習結(jié)合了深度學習和強化學習的優(yōu)點,在工業(yè)界復雜的場景下有更好的表現(xiàn)。

      本文首先對數(shù)據(jù)庫參數(shù)優(yōu)化問題進行定義,并對相關方法進行分類;其次,分析現(xiàn)有數(shù)據(jù)庫參數(shù)優(yōu)化方法的關鍵特征;最后,結(jié)合現(xiàn)階段存在的問題,對該領域未來的研究方向進行展望。

      1 數(shù)據(jù)庫參數(shù)優(yōu)化方法

      為避免混淆,使用“配置參數(shù)”表示所有可配置的參數(shù)構成的集合;“配置”表示配置參數(shù)的一組完整取值;“參數(shù)”表示配置參數(shù)集合中的某個參數(shù);“參數(shù)值”表示參數(shù)的具體取值。

      1.1 數(shù)據(jù)庫參數(shù)優(yōu)化問題定義

      數(shù)據(jù)庫通常涉及上百項可調(diào)節(jié)的參數(shù),運行環(huán)境和性能指標也較復雜。對數(shù)據(jù)庫參數(shù)優(yōu)化的定義如下。

      (1)配置。假設數(shù)據(jù)庫系統(tǒng)中共有n個可調(diào)整的參數(shù),記為

      x=。

      (1)

      式中:xi為第i個參數(shù)的取值;x為一個配置,包含了所有可能的參數(shù)值的組合,每個配置表示n維參數(shù)空間的一個點。

      (2)運行環(huán)境。數(shù)據(jù)庫的表現(xiàn)不僅受參數(shù)影響,同時也和工作負載和硬件配置等運行環(huán)境密切相關。將運行環(huán)境集合記為E,每一種獨特的環(huán)境記為e, 其中e?E。

      (3)系統(tǒng)性能。性能指標有吞吐量、響應時間等,設P表示數(shù)據(jù)庫的整體性能,P的計算方式通常不唯一。P受配置x和環(huán)境e的影響,P與x的映射關系定義為

      P=f(x,e)。

      (2)

      式中:f(x,e)為數(shù)據(jù)庫系統(tǒng)在環(huán)境e下,部署配置x的性能,參數(shù)優(yōu)化的方向即為最大化函數(shù)f(x,e)。

      (4)約束條件。約束條件指變量xi必須滿足某些條件,如數(shù)據(jù)庫中每個參數(shù)的值都必須在規(guī)定的取值范圍內(nèi)。此外參數(shù)優(yōu)化消耗的時間、資源等也構成了約束條件的一部分。

      數(shù)據(jù)庫參數(shù)優(yōu)化問題可定義為

      maxf(x,e);

      (3)

      s.t.gi(x)≤0,i=1,2,…,p;

      (4)

      hi(x)=0,i=1,2,…,q。

      (5)

      式中:x為數(shù)據(jù)庫配置;e為環(huán)境;求解目標為最大化f(x,e),gi(x)≤0和hj(x)=0為求解目標函數(shù)需要滿足的第i或j個約束條件。參數(shù)優(yōu)化問題可概括為在滿足約束條件的同時,為數(shù)據(jù)庫尋找合適的配置,使得數(shù)據(jù)庫在特定環(huán)境達到最優(yōu)的性能。

      1.2 數(shù)據(jù)庫參數(shù)優(yōu)化方法介紹

      多年來,學者通過各種方式嘗試解決這一問題[4-11],參數(shù)優(yōu)化方法分類如表1所示。

      表1 數(shù)據(jù)庫參數(shù)優(yōu)化方法比較Table 1 Comparison of database tuning methods

      1.2.1 專家決策

      對數(shù)據(jù)庫參數(shù)的調(diào)整依賴于數(shù)據(jù)庫管理員(database administrator,DBA),管理員通過手工多次實驗得到統(tǒng)計結(jié)果,再根據(jù)經(jīng)驗調(diào)整數(shù)據(jù)庫參數(shù)。但是數(shù)據(jù)庫參數(shù)較多,多個參數(shù)組成的高維參數(shù)空間較大,通過手工抽樣的方式難以獲得最優(yōu)解。此外,手工測試每個樣本的質(zhì)量費時費力,調(diào)優(yōu)結(jié)果難以適應變化的生產(chǎn)環(huán)境,因此,有學者嘗試使用經(jīng)典算法來解決該問題。

      1.2.2 基于規(guī)則的參數(shù)優(yōu)化方法

      為提高調(diào)優(yōu)效率,DBA使用工具來輔助決策,使用某種方法,分析出模糊或確切的規(guī)則,然后輔助DBA調(diào)整數(shù)據(jù)庫參數(shù)。如 PostgreSQLTune能夠收集并分析數(shù)據(jù)庫的狀態(tài)(如當前緩存命中率等),分析出影響數(shù)據(jù)庫性能的關鍵參數(shù),根據(jù)分析的結(jié)果和固定的規(guī)則來推薦用戶修改某些參數(shù)。Trummer[12]提出了一種自動從文本中提取出規(guī)則的工具 DB-BERT。DB-BERT使用預先訓練好的自然語言處理模型BERT[13]從數(shù)據(jù)庫手冊中識別出和參數(shù)相關的文本,將文本轉(zhuǎn)換成規(guī)則,根據(jù)規(guī)則推薦數(shù)據(jù)庫配置。這類工具雖然能夠減輕DBA的負擔,但其核心是基于規(guī)則來調(diào)整參數(shù),應對的場景有限,面對復雜的數(shù)據(jù)庫環(huán)境和硬件,難以保持良好的表現(xiàn)。MySQLTuner[14]是一款基于規(guī)則調(diào)整MySQL配置的工具,可在不停機的情況下實時獲取數(shù)據(jù)庫的狀態(tài),給出調(diào)整參數(shù)的建議。Xu等[15]針對如何選擇系統(tǒng)性能優(yōu)化最相關的參數(shù)開展研究,結(jié)果表明,大量的數(shù)據(jù)庫參數(shù)沒有調(diào)整的價值,因此有必要進行參數(shù)篩選;簡化枚舉類型的參數(shù)可有效降低計算量,且對調(diào)優(yōu)結(jié)果的影響幾乎可以忽略。

      1.2.3 基于啟發(fā)式算法的參數(shù)優(yōu)化方法

      啟發(fā)式算法調(diào)整參數(shù)的主要思路是“搜索”,例如Zhu等[16]提出了一個基于搜索的參數(shù)優(yōu)化系統(tǒng) BestConfig。BestConfig 使用網(wǎng)格抽樣(grid sampling)的方式將連續(xù)的參數(shù)取值范圍離散化:參數(shù)取值范圍被劃分為k段,然后在每段上隨機取1個值,這樣n個參數(shù)可以組合出的配置為kn個。為減少搜索時間,BestConfig并不測試每一個配置,而是使用有界遞歸搜索算法隨機地選取k個樣本進行測試,然后以表現(xiàn)好的樣本為中心,重新開始搜索,如此迭代可在有限的資源下找到表現(xiàn)較好的配置。

      此外,還有針對特定類型和版本的數(shù)據(jù)庫調(diào)優(yōu)指南,例如Oracle數(shù)據(jù)庫調(diào)優(yōu)指南[17]、DB2數(shù)據(jù)庫調(diào)優(yōu)手冊[18]、Azure SQL數(shù)據(jù)庫的性能優(yōu)化指南[19]。以上方法主要依賴于固定的參數(shù)優(yōu)化規(guī)則或使用搜索算法找到合適的配置,在效率上高于DBA,但無法完全解決參數(shù)優(yōu)化這類NP-Hard 問題,也不能在歷史經(jīng)驗的基礎上更新模型,每次調(diào)優(yōu)都要重新開始,模型的優(yōu)化能力有限。

      1.2.4 基于機器學習的參數(shù)優(yōu)化方法

      不同于啟發(fā)式算法,機器學習方法可以從訓練樣本中學習輸入與輸出之間的關系,因此能夠?qū)敵鼋o出更為準確的預測。現(xiàn)有的研究成果中,主要使用了傳統(tǒng)機器學習和深度強化學習兩種方法。

      2 基于傳統(tǒng)機器學習的參數(shù)優(yōu)化方法

      2.1 方法概述

      傳統(tǒng)機器學習方法包括決策樹、線性回歸和神經(jīng)網(wǎng)絡等多種經(jīng)典模型,利用訓練數(shù)據(jù)進行回歸分析和模式識別等,一般包括以下幾個步驟。

      步驟1 性能采樣。數(shù)據(jù)庫的主要性能指標為吞吐量和延遲,使用采樣算法或隨機采樣,得到若干配置,通過實驗或者仿真等方式對配置進行評估,記錄下每種配置部署到數(shù)據(jù)庫后對數(shù)據(jù)庫帶來的提升,得到訓練樣本。

      步驟2 構建性能預測模型。如圖1所示,基于步驟1得到的訓練樣本,利用機器學習方法,如回歸模型等,預測數(shù)據(jù)庫與某一配置下的性能之間的隱含關系。

      步驟3 尋找最優(yōu)配置。利用遺傳算法和梯度上升等方法,嘗試不同的配置,找到使系統(tǒng)性能達到最優(yōu)的配置。

      基于傳統(tǒng)機器學習的參數(shù)優(yōu)化方法如表2所示。

      2.2 經(jīng)典模型

      目前較常用的方法是根據(jù)專家的經(jīng)驗篩選出對數(shù)據(jù)庫性能影響最大的參數(shù),同時也有一些研究人員使用機器學習技術對相關性較強的參數(shù)進行排序,例如Lasso和方差分析。Lima等[27]使用遞歸特征消除(recursive feature elimination,RFE)和其他有監(jiān)督學習方法評估配置的表現(xiàn),迭代地減少相關性較弱的參數(shù)。算法分為3步:①根據(jù)預測的性能指標來給配置的表現(xiàn)打分;②利用線性回歸和決策樹等方法對參數(shù)排序;③基于隨機森林、梯度提升機(gradient boosting machine,GBM)和決策樹構建性能預測模型。實驗結(jié)果表明,在準確性上,使用參數(shù)子集訓練的模型優(yōu)于使用整個參數(shù)集訓練的模型,說明了選擇參數(shù)的重要性。

      表2 基于傳統(tǒng)機器學習的數(shù)據(jù)庫參數(shù)優(yōu)化方法Table 2 Traditional machine learning-based database tuning methods

      iTuned[20]是一款基于機器學習的自動數(shù)據(jù)庫參數(shù)優(yōu)化系統(tǒng),其優(yōu)化過程主要分為兩步。首先,使用拉丁超立方體采樣(Latin hypercube sampling,LHS)選擇初始樣本。然后,利用這些樣本構建基于高斯過程[28](Gauss processes,GP)的性能曲面,并基于觀測結(jié)果改進函數(shù),在參數(shù)空間中繼續(xù)選擇采樣點并在采樣點上再次進行實驗,得到對應的性能值后,更新性能曲面,重復這個過程,直到達到最優(yōu)配置。在這個過程中,基于高斯過程的性能曲面逐漸逼近實際性能曲面,因此可以更快地找到最佳配置。但預測實際的性能曲面計算量較大,預測不夠精確,盡管iTuned使用參數(shù)選擇和工作負載壓縮等方法提升調(diào)優(yōu)速度,但在性能曲面上尋找最優(yōu)解仍需要消耗大量時間,例如在MySQL數(shù)據(jù)庫上選擇7個參數(shù)進行調(diào)優(yōu),每次可消耗3.2~7.0 h,這使得iTuned難以應用在生產(chǎn)環(huán)境。

      OtterTune[21]使用了與iTuned類似的策略,創(chuàng)新之處在于實驗過程中使用之前學習到的知識來指導參數(shù)采樣,通過利用歷史數(shù)據(jù),OtterTune可以更快地找到全局最優(yōu)解,實現(xiàn)更好的性能優(yōu)化效果。OtterTune優(yōu)化參數(shù)的過程主要分為以下3步。

      (1)特征抽取。從原始數(shù)據(jù)中選擇與之相關的一部分特征,使用部分特征來代替原始數(shù)據(jù)參與計算。OtterTune根據(jù)數(shù)據(jù)庫工作負載(workload)的特征來調(diào)整參數(shù),不同的工作負載對參數(shù)的敏感性不同,因此,提取工作負載的特征并找到工作負載與參數(shù)的關聯(lián)非常重要。工作負載的特征包含兩方面:一方面是工作負載本身的特征,如負載中包含的查詢語句的類型、關聯(lián)的視圖、存儲過程和索引等;另一方面是數(shù)據(jù)庫在執(zhí)行負載時的內(nèi)部狀態(tài),如內(nèi)存使用率和緩存命中率等。

      (2)降維。OtterTune使用因子分析(factor analysis,FA)對上一步中抽取出的特征進行篩選以去除無關特征,使用機器學習方法k-means 選擇與參數(shù)相關的特征,篩選后的特征將作為模型輸入的一部分。為進一步減少機器學習算法的搜索空間,OtterTune利用Lasso算法來選取與數(shù)據(jù)庫性能相關性最強的參數(shù),并將參數(shù)按照重要性排序。

      (3)搜索。OtterTune根據(jù)特征將當前的工作負載W映射到一個相似的負載W′,W′是在以前的參數(shù)優(yōu)化任務中出現(xiàn)過的負載,所以針對W′調(diào)優(yōu)的經(jīng)驗可以復用,從而提升模型的效率。但由于W和W′并非完全相同,所以在調(diào)優(yōu)時,系統(tǒng)綜合考量W和W′。

      與iTuned 類似,OtterTune使用高斯過程估計出一個函數(shù)f(x),x為配置,f(x)代表將x部署在數(shù)據(jù)庫上執(zhí)行負載W的性能。在f(x)上進行梯度下降(gradient descent)可找到局部最優(yōu)的點。整個梯度下降的過程需要 10~20 s,每次調(diào)整參數(shù)的結(jié)果都將被保存起來,以便后續(xù)利用歷史經(jīng)驗,結(jié)果明顯優(yōu)于啟發(fā)式方法。然而,在高斯過程中,需要估計每個數(shù)據(jù)點的均值和協(xié)方差,從而得到整個函數(shù)的概率分布。這需要求解一個n×n的協(xié)方差矩陣K,其中n為數(shù)據(jù)點的數(shù)量,Ki,j=k(xi,xj)表示數(shù)據(jù)點xi和xj的協(xié)方差,整個高斯過程的訓練時間復雜度為O(n3),因此難以處理高維或大規(guī)模的數(shù)據(jù)。

      Gunasekaran等[29]對OtterTune進行了改進,使用高斯混合模型(Gaussian mixture models,GMM)來修剪指標,并將集成模型(如隨機森林)與非線性模型(如神經(jīng)網(wǎng)絡)結(jié)合起來進行建模。其中的一個關鍵步驟是利用歷史調(diào)優(yōu)數(shù)據(jù)來訓練機器學習模型以提高預測的性能。此外,使用GMM聚類替代k-means聚類進行指標修剪,通過將每個簇視為不同的高斯分布,并考慮簇的均值和方差來克服k-means聚類的缺點。通過使用輪廓系數(shù)和貝葉斯信息準則(Bayesian information criterion,BIC)來確定GMM的最佳簇數(shù)。Gunasekaran等[29]建議進一步研究GMM聚類作為k-means聚類的代替,并收集更多數(shù)據(jù)以深入探索不同方法。實驗結(jié)果表明,基于GPR(Gaussian process regression)的基準模型表現(xiàn)最好,平均百分比誤差MAPE達到69%。

      沈忱等[30]基于OtterTune提出了一種改進的方法D-OtterTune。D-OtterTune利用動態(tài)負載匹配方法解決OtterTune等模型中對靜態(tài)負載描述不夠準確的問題,基于動態(tài)時間規(guī)整算法將數(shù)據(jù)對齊來解決負載匹配中序列不規(guī)則的問題。

      iBTune[22]專注于對數(shù)據(jù)庫緩沖池(buffer pool)進行優(yōu)化,通過對緩存模型進行偏差分析(deviation analysis),在確保緩存命中率和響應時間的同時降低內(nèi)存占用。Rafiki[23]是一種針對靜態(tài)工作負載的自動調(diào)優(yōu)工具,當工作負載發(fā)生變化時,需要重啟調(diào)優(yōu)過程并重啟數(shù)據(jù)庫,會對數(shù)據(jù)庫的可用性和穩(wěn)定性造成較大影響。LlamaTune[24]利用領域知識(domain knowledge)提升調(diào)優(yōu)過程中的采樣效率,利用隨機投影對參數(shù)空間降維,并對參數(shù)的取值范圍離散化,以進一步降低計算量。CGPTuner[25]綜合考慮操作系統(tǒng)和物理硬件等因素,基于上下文高斯過程(contextual Gaussian process)進行優(yōu)化。OPTIMUSCLOUD[26]通過分析虛擬機參數(shù)和數(shù)據(jù)庫之間的依賴關系,基于隨機森林預測給定軟硬件環(huán)境下配置的表現(xiàn)。根據(jù)工作負載的變化情況決定何時更新配置,然后通過評估不同配置的適用性來確定更新哪些數(shù)據(jù)庫實例。Ishihara等[31]提出的調(diào)優(yōu)模型采用高斯過程來搜索較優(yōu)的數(shù)據(jù)庫配置,能夠應用于多種軟件系統(tǒng)。Siegmund等[32]綜合利用抽樣啟發(fā)方法和機器學習方法為系統(tǒng)生成性能影響模型。Nair等[33]提出了一種基于排序的性能預測模型,以降低構建性能模型的成本。

      2.3 神經(jīng)網(wǎng)絡模型

      深度神經(jīng)網(wǎng)絡可以通過多層神經(jīng)元進行高維特征提取,對高維數(shù)據(jù)具有較好的處理能力,同時神經(jīng)網(wǎng)絡可以通過并行計算和GPU加速等方式高效處理大規(guī)模數(shù)據(jù)。Zheng等[4]提出了一種基于神經(jīng)網(wǎng)絡的調(diào)優(yōu)方法。從自動工作負載存儲庫(automatic workload repository,AWR)收集數(shù)據(jù),包括系統(tǒng)的統(tǒng)計信息、會話日志和查詢語句的執(zhí)行記錄,然后構建神經(jīng)網(wǎng)絡模型以獲取數(shù)據(jù)庫參數(shù)和性能指標(如吞吐量)之間的關系,最后采用調(diào)優(yōu)算法優(yōu)化這些關鍵參數(shù)。Rodd等[34]也提出了一種基于神經(jīng)網(wǎng)絡的調(diào)優(yōu)方法,通過收集數(shù)據(jù)庫的關鍵性能指標為數(shù)據(jù)庫的緩存推薦合適的值。Taft等[35]針對OLTP類型的工作負載構建負載預測模型,在負載增加之前對計算資源進行預測性分配,結(jié)果優(yōu)于被動式調(diào)優(yōu)系統(tǒng)。ACTGAN[36]是基于生成式對抗網(wǎng)絡(generative adversarial network,GAN)的軟件系統(tǒng)優(yōu)化模型,也可用于數(shù)據(jù)庫參數(shù)優(yōu)化。ACTGAN利用隨機抽樣得到初始樣本,從中選取表現(xiàn)較好的配置來訓練GAN網(wǎng)絡,不同于“搜索”的策略,ACTGAN使用生成的方式直接推薦配置,這與強化學習的思路較為相似。Ha等[37]結(jié)合深度前饋神經(jīng)網(wǎng)絡(deep feedforward neural network,DFNN)和L1正則化的系統(tǒng)性能預測方法,提出了一種可以對系統(tǒng)性能進行預測的模型DeepPerf。該工作研究對象為軟件系統(tǒng),同時也適用于數(shù)據(jù)庫管理系統(tǒng)。

      Fang等[38]提出了一種基于機器學習的查詢級分布式數(shù)據(jù)庫調(diào)優(yōu)模型。首先,利用查詢向量嵌入網(wǎng)絡(query vector embedding network,QVEN)壓縮原始輸入,生成表示查詢特征的向量。QVEN的訓練目標是使輸出盡可能接近實際查詢特征向量的壓縮表示,可用于查詢語句向量化。對輸入的查詢語句和對應的執(zhí)行計劃進行解析和降維生成表示查詢特征的壓縮查詢向量。在此基礎上,利用查詢性能預測網(wǎng)絡(query performance predict network,QPPN)來預測查詢的執(zhí)行時間。QPPN模型由3層神經(jīng)網(wǎng)絡組成,包括線性層、BatchNorm層和ReLU激活函數(shù)。在訓練模型之前,輸入的查詢向量和配置向量會進行歸一化處理,該模型的訓練數(shù)據(jù)是由查詢向量、配置向量和延遲時間組成的集合。通過運行工作負載并獲取查詢語句的執(zhí)行計劃,可以生成訓練數(shù)據(jù)。在CockroachDB上的實驗結(jié)果表明,該系統(tǒng)在典型的OLAP工作負載下實現(xiàn)了更高的性能,平均降低9.2%的延遲,并且對于某些查詢類型,延遲降低超過60%。

      3 基于深度強化學習的參數(shù)優(yōu)化方法

      傳統(tǒng)機器學習方法利用過去的調(diào)優(yōu)數(shù)據(jù)能夠加速調(diào)參任務,但仍然存在一些局限性。首先,傳統(tǒng)機器學習方法依賴大規(guī)模高質(zhì)量的訓練樣本;其次,傳統(tǒng)機器學習方法通常采用鏈式結(jié)構,在每個階段獲得的最優(yōu)解并不能保證在下一階段仍然是最優(yōu)解;最后,數(shù)據(jù)庫系統(tǒng)具有高維連續(xù)的參數(shù)空間,傳統(tǒng)的機器學習模型擬合出的性能曲面不夠精確,而且難以在多項式時間內(nèi)尋找該曲面上的最優(yōu)解。針對上述問題,一些研究人員開始嘗試使用強化學習來解決數(shù)據(jù)庫參數(shù)優(yōu)化問題。

      3.1 方法概述

      強化學習不像傳統(tǒng)機器學習那樣需要大量帶標注的樣本,相反,智能體(agent)在與數(shù)據(jù)庫交互的過程中,通過試錯來學習如何生成高質(zhì)量配置。強化學習的核心是利用智能體與環(huán)境(environment)進行交互,并通過在環(huán)境中執(zhí)行一系列動作來學習如何最大化獎勵(reward)。DQN[39]等方法可用于處理離散動作,而數(shù)據(jù)庫中大部分參數(shù)的取值范圍為一個連續(xù)區(qū)間,多個參數(shù)值構成的配置有無窮多個。Mnih等[40]將深度神經(jīng)網(wǎng)絡與強化學習結(jié)合,提出了一種深度強化學習(deep reinforcement learning,DRL)模型,利用深度神經(jīng)網(wǎng)絡來處理強化學習中具有連續(xù)取值空間的參數(shù)。

      將DRL應用到參數(shù)優(yōu)化問題的最大挑戰(zhàn)之一是基于強化學習模型對參數(shù)優(yōu)化問題建模。強化學習的數(shù)學基礎是馬爾科夫決策過程(Markov decision process,MDP),如圖2所示,在一個MDP中,智能體在觀測環(huán)境的狀態(tài)后,選擇一個動作并執(zhí)行,執(zhí)行動作后,智能體根據(jù)執(zhí)行結(jié)果獲得一次獎勵,隨后,環(huán)境的狀態(tài)可能發(fā)生變化,智能體再次觀測環(huán)境狀態(tài)和選擇動作,這個過程不斷重復,直至達到終止條件。智能體的目標是選擇一個最優(yōu)的策略,使得回報(累計獎勵)最大化。

      圖2 強化學習流程Figure 2 Process of reinforcement learning

      圖2中si為第i步環(huán)境的狀態(tài),ai為第i步智能體的動作,ri為第i步智能體獲得的獎勵。強化學習與參數(shù)優(yōu)化問題的映射如表3所示。

      表3 強化學習與參數(shù)優(yōu)化問題的映射Table 3 Mapping from RL to database tuning problem

      (1)智能體。智能體是做出決策的主體,智能體可以基于多種模型構建。

      (2)環(huán)境。數(shù)據(jù)庫被視為一個環(huán)境,智能體在與環(huán)境的交互中學習。

      (3)動作。動作是智能體基于當前狀態(tài)做出的決策。在參數(shù)優(yōu)化問題中,動作是生成配置。

      (4)動作空間。指所有可能動作的集合。在參數(shù)優(yōu)化問題中,指所有可選擇的數(shù)據(jù)庫配置的集合。

      (5)獎勵。獎勵是環(huán)境對于智能體動作的反饋,智能體生成的配置對數(shù)據(jù)庫帶來的提升越大,獎勵越大,反之亦然。獎勵的計算方式由獎勵函數(shù)(reward function)定義。

      (6)狀態(tài)。對當前時刻數(shù)據(jù)庫運行狀態(tài)的概括,如當前死鎖數(shù)量(lock_deads)和當前打開文件數(shù)量(file_num_open_files)等。

      其中,智能體是整個參數(shù)優(yōu)化模型的核心,智能體的構建和訓練直接影響模型的表現(xiàn)。

      3.2 智能體的構建

      智能體的形式并不唯一,通常需要根據(jù)強化學習的目標和環(huán)境的特點來設計。由于智能體需要在連續(xù)高維的參數(shù)空間中探索合適的配置,所以需要使用能夠處理連續(xù)動作空間的算法來構建智能體。以soft actor-cricit[41]為例,智能體的結(jié)構如圖3所示。其主要包含actor和critic兩個神經(jīng)網(wǎng)絡,通過更新actor和critic網(wǎng)絡的參數(shù)來學習生成高質(zhì)量配置。

      圖3 智能體架構圖Figure 3 Architecture of agent

      給定任意隨機變量x,假設x的概率密度為P(x),則x的熵的定義如下:

      (6)

      熵反映了一個系統(tǒng)的混亂程度,在參數(shù)優(yōu)化中,該項表示智能體輸出配置的多樣化程度,該項可引導智能體盡可能地輸出多樣的配置,從而增加智能體在參數(shù)空間的探索能力。

      智能體學習的過程是最大化目標函數(shù)的過程,目標函數(shù)不唯一,其中一種定義如下:

      (7)

      式中:π為智能體的策略;Vπ(s)為在狀態(tài)s下策略π表現(xiàn)的好壞程度;R(st,at)為獎勵函數(shù),表示智能體在環(huán)境的狀態(tài)為st下做出動作at能夠獲得的獎勵;α為系數(shù);H(π(·|st))為智能體輸出的動作的熵。

      智能體對應的動作價值函數(shù)(action-value function)定義為

      (8)

      動作價值函數(shù)代表在策略π和狀態(tài)st下采取動作at可獲得的回報的期望?;貓?累計獎勵)為多次獎勵的加權和,根據(jù)式(7)和式(8),Vπ(s)可改寫為

      (9)

      智能體中actor的輸入是狀態(tài)s,輸出為數(shù)據(jù)庫配置;critic的輸入為狀態(tài)s、配置和獎勵,輸出為1個累計獎勵的期望。智能體使用梯度上升更新actor和critic網(wǎng)絡的權重來最大化目標函數(shù)。訓練智能體的流程如下。

      步驟1 使用隨機參數(shù)初始化actor 和 critic 網(wǎng)絡。

      步驟2 在t時刻,智能體觀測環(huán)境狀態(tài)st并由actor選擇動作,即生成數(shù)據(jù)庫配置。

      步驟3 從環(huán)境獲得獎勵rt和新的狀態(tài)st+1。

      步驟4 critic為actor輸出的配置生成1個打分,打分代表智能體未來可獲得的回報。打分越高,表示actor 輸出的配置的質(zhì)量越好。

      步驟5 critic根據(jù)rt和式(8)更新網(wǎng)絡參數(shù),以獲得更精確的打分。

      步驟6 actor使用梯度上升最大化式(7),獲得更高的打分。

      步驟1至步驟6重復進行,直到智能體收斂或達到終止條件。以上步驟與實際情況略有出入,在實際中,還會使用經(jīng)驗回放和自動調(diào)整熵正則項優(yōu)化等技術來提升智能體的穩(wěn)定性和效率。

      3.3 相關工作

      深度強化學習相關參數(shù)優(yōu)化系統(tǒng)如表4所示。

      表4 深度強化學習相關參數(shù)優(yōu)化系統(tǒng)Table 4 Database tuning system with reinforcement learning

      深度強化學習方法在吞吐量和延遲兩方面表現(xiàn)更出色,強化學習能將吞吐量提升到8倍,而大部分傳統(tǒng)機器學習方法僅能提升不到1倍。然而,由于智能體和數(shù)據(jù)庫之間頻繁交互,深度強化學習方法的運行時間更長。例如,CDBTune+[11]運行時間長達50 h,Hunter[43]采用分布式訓練可將運行時間縮短至3 h,傳統(tǒng)機器學習方法則只需要1 h左右。

      3.3.1 CDBTune

      CDBTune首次將深度強化學習應用到數(shù)據(jù)庫參數(shù)優(yōu)化問題上,基于深度確定性策略梯度算法(deep deterministic policy gradient,DDPG)[45-46]構建智能體。CDBTune優(yōu)化的指標為數(shù)據(jù)庫的吞吐量和延遲,在t時刻,配置對兩個指標的提升的定義如下:

      (10)

      (11)

      式中:Tt為t時刻的吞吐量;T0為數(shù)據(jù)庫初始狀態(tài)的吞吐量;ΔTt→0和ΔTt→t-1分別為t時刻與初始狀態(tài)和上一狀態(tài)相比較對吞吐量的影響;ΔT為t時刻配置對吞吐量的總體影響;ΔL為t時刻配置對延遲的總體影響?;谑?10)和式(11),獎勵函數(shù)定義如下:

      (12)

      獎勵函數(shù)引導著智能體生成能夠提升吞吐量和降低延遲的配置,若配置未能給數(shù)據(jù)庫帶來提升,則獎勵函數(shù)返回0或負值。相較于傳統(tǒng)機器學習方法,CDBTune有以下優(yōu)勢。

      (1)在獎勵函數(shù)的引導下,智能體以試錯的方式尋找最優(yōu)配置,僅需少量樣本即可實現(xiàn)較好的結(jié)果。

      (2)在高維連續(xù)空間中表現(xiàn)優(yōu)于OtterTune等基于傳統(tǒng)回歸方法的模型。

      (3)利用端到端的方法減少出錯概率,避免陷入局部最優(yōu)。

      CDBTune的調(diào)優(yōu)粒度較粗,僅能對3種工作負載調(diào)優(yōu):只讀(read-only)型工作負載、只寫(write-only)型工作負載、讀寫混合(read-write)型工作負載,無法對特定的工作負載優(yōu)化。

      3.3.2 Qtune

      Qtune同樣基于DDPG構建智能體,但是Qtune可提供不同粒度的優(yōu)化方案。Qtune從SQL語句中提取特征,如查詢類型、查詢代價和查詢關聯(lián)的數(shù)據(jù)庫表等,將這些特征提供給深度強化學習模型,以動態(tài)選擇合適的參數(shù)配置。Qtune的調(diào)優(yōu)粒度從高到低分別為查詢級調(diào)優(yōu)、負載級調(diào)優(yōu)、簇級調(diào)優(yōu)。查詢級調(diào)優(yōu)針對單個查詢生成合適的配置。這種方法延遲較低 ,但不能并行運行SQL語句,導致吞吐量較低。工作負載級調(diào)優(yōu)面向工作負載推薦配置,吞吐量較高,但不能針對SQL語句推薦配置,因此具有高延遲。簇級調(diào)優(yōu)兼顧了高吞吐量和低延遲,將SQL語句分為若干個組,以組為單位進行調(diào)優(yōu)。Qtune提出了一種基于深度學習的查詢聚類方法,能夠根據(jù)SQL語句的特征進行聚類。這種方法可以實現(xiàn)高吞吐量和低時延。用戶可根據(jù)需求權衡吞吐量和延遲,選擇不同的調(diào)優(yōu)粒度。

      3.3.3 Hunter

      Qtune和CDBTune能有效地生成高質(zhì)量數(shù)據(jù)庫配置,但是在訓練智能體過程中,每回合都需要利用吞吐量和延遲計算獎勵值,為獲取準確的吞吐量和延遲,每次需要對數(shù)據(jù)庫進行至少 1 min的壓力測試,這消耗了大量的時間。為解決該問題,Hunter同樣以DRL為核心,利用主成分分析 (principal component analysis,PCA)和隨機森林(random forest,RF)減少 DRL 模型的搜索空間,提升搜索效率,利用遺傳算法為DRL模型生成訓練樣本,提升模型訓練速度。為了進一步加速模型的訓練,Hunter克隆多個數(shù)據(jù)庫實例并行訓練,使用10個克隆的數(shù)據(jù)庫實例可將訓練速度提升約3倍。

      3.3.4 ResTune

      ResTune使用元學習(meta-learning)從歷史調(diào)優(yōu)中抽取經(jīng)驗,加速帶約束的貝葉斯優(yōu)化問題,保證性能滿足用戶需求的同時,盡可能減少資源消耗。

      DRL融合MDP和梯度上升調(diào)整數(shù)據(jù)庫參數(shù),降低了對樣本的需求,然而,智能體的動作具有一定的不確定性,尤其在初始階段,智能體的策略近似于隨機,因此可能生成危險的配置,進而導致數(shù)據(jù)庫性能大幅下降甚至停機。此外,模型的表現(xiàn)受軟硬件環(huán)境的影響。因此需要權衡多個因素,才能使總體效果達到最優(yōu)。

      4 趨勢與展望

      (1)參數(shù)優(yōu)化的細粒度。已有的工作大多是針對數(shù)據(jù)庫的吞吐量和延遲進行優(yōu)化,這些指標可根據(jù)業(yè)務類型進一步進行細分,如寫吞吐量,讀吞吐量、寫延遲、讀延遲和緩存大小等。優(yōu)化的對象也可以是單條查詢、單個類型查詢或某一用戶的行為習慣。根據(jù)場景的變化,動態(tài)調(diào)整參數(shù)優(yōu)化的細粒度能夠使模型有更好的適應性[47]。

      (2)基于變化環(huán)境的數(shù)據(jù)庫參數(shù)優(yōu)化。數(shù)據(jù)庫在不同軟硬件環(huán)境下表現(xiàn)有一定的差異,如何在環(huán)境發(fā)生變化時能夠用已有的經(jīng)驗快速生成針對新環(huán)境的優(yōu)化結(jié)果,是一個重要的問題。遷移學習通過利用源域中學到的知識和經(jīng)驗來改善目標域中的學習性能,減少標注數(shù)據(jù)的需求,提升模型的泛化能力,并幫助解決樣本不平衡問題。Jamshidi等[48]利用遷移學習將部分歷史經(jīng)驗從源域遷移至目標域以適應新的環(huán)境。然而,如何在環(huán)境劇烈變化時仍能充分利用已有系統(tǒng)的知識,是未來重要的研究方向。

      (3)自運維的數(shù)據(jù)庫。已有的數(shù)據(jù)庫參數(shù)優(yōu)化系統(tǒng)由人工設置優(yōu)化指標和各種超參數(shù),然后在接收到優(yōu)化請求后,啟動優(yōu)化流程[49]。Pavlo等[50]認為自運維的數(shù)據(jù)庫應該滿足:①自動選擇進行何時進行何種操作以改進某項指標;②從歷史經(jīng)驗中自動學習,并在沒有人工干預的情況下根據(jù)歷史經(jīng)驗做出決策。目前幾乎沒有能完全解決這類問題的工作。除了數(shù)據(jù)庫參數(shù)調(diào)優(yōu)外,未來的數(shù)據(jù)庫也將朝著自主監(jiān)控、自主診斷、自主修復等方向發(fā)展[51-56]。

      5 結(jié)束語

      數(shù)據(jù)庫系統(tǒng)是一個由存儲介質(zhì)、處理對象和管理系統(tǒng)集合體構成的復雜系統(tǒng),數(shù)據(jù)庫自身的復雜性和外部環(huán)境的多樣性為參數(shù)優(yōu)化帶來了多種挑戰(zhàn)。相較于經(jīng)典機器學習模型,神經(jīng)網(wǎng)絡能夠更好地處理復雜數(shù)據(jù),但是對訓練樣本的依賴性限制了其泛化能力。而強化學習基于馬爾科夫決策過程,以試錯的方式在連續(xù)高維空間內(nèi)搜索最優(yōu)解,減少了對訓練數(shù)據(jù)的依賴。以強化學習為核心,并結(jié)合多種方法的數(shù)據(jù)庫參數(shù)優(yōu)化模型取得了較好的結(jié)果。此外,如何在自運維等場景下進行參數(shù)優(yōu)化,已成為當前研究熱點和難點。

      猜你喜歡
      數(shù)據(jù)庫性能智能
      提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
      智能前沿
      文苑(2018年23期)2018-12-14 01:06:06
      智能前沿
      文苑(2018年19期)2018-11-09 01:30:14
      智能前沿
      文苑(2018年17期)2018-11-09 01:29:26
      智能前沿
      文苑(2018年21期)2018-11-09 01:22:32
      數(shù)據(jù)庫
      財經(jīng)(2017年2期)2017-03-10 14:35:35
      數(shù)據(jù)庫
      財經(jīng)(2016年15期)2016-06-03 07:38:02
      數(shù)據(jù)庫
      財經(jīng)(2016年3期)2016-03-07 07:44:46
      數(shù)據(jù)庫
      財經(jīng)(2016年6期)2016-02-24 07:41:51
      Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征
      平湖市| 思茅市| 施秉县| 陇西县| 岚皋县| 腾冲县| 临高县| 华阴市| 青州市| 黄平县| 东兰县| 金山区| 环江| 漳州市| 临高县| 沅江市| 洛宁县| 文安县| 东城区| 日喀则市| 姚安县| 乐业县| 五大连池市| 潞西市| 赤水市| 古丈县| 庆云县| 垦利县| 平武县| 衡南县| 阳朔县| 永新县| 永定县| 连云港市| 仙游县| 额尔古纳市| 萝北县| 英超| 双桥区| 米脂县| 黎平县|