国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)調(diào)優(yōu)方法綜述

2023-03-27 13:39崔江濤
關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)性能

曹 蓉 鮑 亮 崔江濤 李 輝 周 恒

1(西安電子科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 西安 710071)

2(浪潮集團(tuán)有限公司 濟(jì)南 250014)

萬(wàn)維網(wǎng)、電子商務(wù)、物聯(lián)網(wǎng)和其他應(yīng)用的持續(xù)發(fā)展產(chǎn)生了大量且不斷增長(zhǎng)的原始數(shù)據(jù),因此需要一類軟件系統(tǒng)來(lái)處理海量的原始數(shù)據(jù),并通過(guò)分析數(shù)據(jù)從中提取有用信息.為了滿足數(shù)據(jù)處理的需要,數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)運(yùn)而生,它不僅是存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體,也是一個(gè)為應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是數(shù)據(jù)基礎(chǔ)設(shè)施中必不可少的關(guān)鍵組成部分.在這種背景下,實(shí)現(xiàn)良好且健壯的數(shù)據(jù)庫(kù)系統(tǒng)性能是高效執(zhí)行數(shù)據(jù)存儲(chǔ)、分析和管理的基礎(chǔ).然而,數(shù)據(jù)庫(kù)系統(tǒng)性能與大量的配置參數(shù)直接相關(guān),這些參數(shù)控制著系統(tǒng)運(yùn)行時(shí)操作的各個(gè)方面,并極大地影響了數(shù)據(jù)庫(kù)的性能[1].數(shù)據(jù)庫(kù)的配置參數(shù)主要分為3 類:1)資源類;2)策略類;3)位置類[2].資源類參數(shù)指定系統(tǒng)為某項(xiàng)任務(wù)分配多少資源,包括固定組件(例如垃圾收集線程數(shù))和動(dòng)態(tài)活動(dòng)(例如每個(gè)查詢的內(nèi)存使用量).策略類參數(shù)決定數(shù)據(jù)庫(kù)系統(tǒng)如何處理特定任務(wù).例如,通過(guò)設(shè)置特定參數(shù)可以控制數(shù)據(jù)庫(kù)系統(tǒng)在事務(wù)提交時(shí)是否將預(yù)寫日志刷新到磁盤.最后,位置類參數(shù)指定數(shù)據(jù)庫(kù)系統(tǒng)在哪里找到需要的資源(例如文件路徑),以及如何與外部進(jìn)行交互(例如網(wǎng)絡(luò)端口號(hào)).其中,資源類和策略類參數(shù)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的性能影響較大,數(shù)據(jù)庫(kù)性能優(yōu)化應(yīng)重點(diǎn)考慮這些參數(shù)在特定環(huán)境下的調(diào)優(yōu).

數(shù)據(jù)庫(kù)參數(shù)優(yōu)化是一項(xiàng)維持或提升數(shù)據(jù)庫(kù)性能的重要工作.通過(guò)調(diào)整數(shù)據(jù)庫(kù)系統(tǒng)配置參數(shù)實(shí)現(xiàn)性能優(yōu)化的一類技術(shù)統(tǒng)稱為數(shù)據(jù)庫(kù)參數(shù)優(yōu)化技術(shù).參數(shù)優(yōu)化產(chǎn)生的性能優(yōu)勢(shì)在業(yè)界是眾所周知的,合適的參數(shù)配置可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)量級(jí)的性能提升[3],而不合適的參數(shù)配置則會(huì)導(dǎo)致其系統(tǒng)性能大幅度降低[4].然而,由于數(shù)據(jù)庫(kù)的性能受到多個(gè)參數(shù)共同影響,再加上可調(diào)參數(shù)數(shù)量、數(shù)據(jù)庫(kù)體量和業(yè)務(wù)量的劇增,導(dǎo)致傳統(tǒng)基于人力的參數(shù)優(yōu)化越來(lái)越困難.另一種直觀的方式則是通過(guò)測(cè)量數(shù)據(jù)庫(kù)系統(tǒng)所有參數(shù)配置的性能,來(lái)確定最佳的參數(shù)配置.但由于高維配置空間的復(fù)雜性,這種方法通常是不可行的.例如,若對(duì)1個(gè)僅具有5 個(gè)可調(diào)參數(shù)的系統(tǒng)進(jìn)行所有實(shí)驗(yàn),假設(shè)每個(gè)參數(shù)有6 種不同的取值,且每個(gè)實(shí)驗(yàn)的平均運(yùn)行時(shí)間為10 min,則進(jìn)行所有實(shí)驗(yàn)需要60 d,這通常是不可接受的[5].因此,數(shù)據(jù)庫(kù)自動(dòng)參數(shù)優(yōu)化技術(shù)是解決這一難題的主要選擇之一,是一種很有前景且具有挑戰(zhàn)性的系統(tǒng)性能優(yōu)化方法.具體來(lái)說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化有3 個(gè)主要的挑戰(zhàn):

1)復(fù)雜性.數(shù)據(jù)庫(kù)系統(tǒng)通常存在數(shù)百個(gè)可調(diào)的參數(shù)[2],參數(shù)具有連續(xù)型、離散型和枚舉型等多種類型和不同的取值范圍,而且參數(shù)之間存在復(fù)雜的隱性依賴關(guān)系.例如,某些參數(shù)可能會(huì)以不同的方式影響查詢性能,而某些參數(shù)組合可能會(huì)產(chǎn)生不同的效果.有研究工作表明在復(fù)雜的參數(shù)空間中找到最優(yōu)的系統(tǒng)參數(shù)配置是一個(gè)NP-hard 問(wèn)題[6].

2)樣本不足.數(shù)據(jù)庫(kù)參數(shù)優(yōu)化通常需要大量數(shù)據(jù)樣本來(lái)獲得良好的結(jié)果,而收集這些數(shù)據(jù)是昂貴和耗時(shí)的.為了不干擾生產(chǎn)系統(tǒng)的運(yùn)行,數(shù)據(jù)庫(kù)管理員(database administrator,DBA)首先需要部署1 個(gè)數(shù)據(jù)庫(kù)副本,并獲取1 個(gè)具有代表性的工作負(fù)載示例,調(diào)優(yōu)工具將在單獨(dú)的測(cè)試系統(tǒng)上運(yùn)行該工作負(fù)載的實(shí)驗(yàn).根據(jù)工作負(fù)載示例運(yùn)行時(shí)間的不同,收集足夠的數(shù)據(jù)樣本可能需要幾天甚至幾周的時(shí)間,而實(shí)際的調(diào)優(yōu)過(guò)程往往有嚴(yán)格的時(shí)間限制,這將導(dǎo)致樣本不足的問(wèn)題.

3)動(dòng)態(tài)變化性.隨著數(shù)據(jù)庫(kù)系統(tǒng)的規(guī)模不斷增大,復(fù)雜性增加,繁復(fù)多變的工作負(fù)載以及靈活的云基礎(chǔ)設(shè)施使數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化變得更具挑戰(zhàn)性.當(dāng)環(huán)境發(fā)生變化時(shí)(包括工作負(fù)載變化、硬件配置變化和軟件版本變更),現(xiàn)有的最優(yōu)參數(shù)配置將不再適用.在這種情況下,如何利用現(xiàn)有的優(yōu)化知識(shí),對(duì)新環(huán)境快速地進(jìn)行參數(shù)優(yōu)化也是亟待解決的問(wèn)題.

目前,大量研究工作通過(guò)在數(shù)據(jù)庫(kù)系統(tǒng)中引入自配置特性來(lái)解決性能優(yōu)化問(wèn)題.值得一提的是,軟件系統(tǒng)參數(shù)優(yōu)化領(lǐng)域也存在大量的研究成果.數(shù)據(jù)庫(kù)管理系統(tǒng)是軟件系統(tǒng)的一個(gè)類別.因此,一部分軟件系統(tǒng)參數(shù)優(yōu)化的工作也適用于數(shù)據(jù)庫(kù)管理系統(tǒng),在實(shí)驗(yàn)部分也會(huì)選取部分?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)對(duì)方案有效性進(jìn)行驗(yàn)證.這部分工作通常滿足2 個(gè)條件:1)參數(shù)優(yōu)化工作視系統(tǒng)性能模型為黑盒模型,無(wú)需對(duì)系統(tǒng)內(nèi)部進(jìn)行深入理解與分析;2)參數(shù)優(yōu)化工作能夠處理連續(xù)型、離散型和枚舉型等多種類型的配置參數(shù),與數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)類型一致.在后續(xù)的文獻(xiàn)綜述中也會(huì)包含一部分滿足上述2 個(gè)條件且對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行實(shí)驗(yàn)驗(yàn)證的軟件系統(tǒng)參數(shù)優(yōu)化工作,并在相應(yīng)位置進(jìn)行說(shuō)明.

本文對(duì)現(xiàn)有的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法進(jìn)行了全面的研究,總結(jié)出針對(duì)不同挑戰(zhàn)和場(chǎng)景提出的不同方法或策略.本文將這些方法按照問(wèn)題場(chǎng)景的不同分為2 類:固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法和變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法.其中,針對(duì)固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法的研究工作較多,按照方法的特點(diǎn)進(jìn)一步分為傳統(tǒng)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法(包括手工參數(shù)優(yōu)化方法、基于規(guī)則的參數(shù)優(yōu)化方法、基于模型的參數(shù)優(yōu)化方法和基于搜索的參數(shù)優(yōu)化方法)和基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法(包括基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法和基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法).下面對(duì)各種方法進(jìn)行簡(jiǎn)要介紹.

1)手工參數(shù)優(yōu)化方法是專家通過(guò)手工反復(fù)實(shí)驗(yàn)得到的數(shù)據(jù)和經(jīng)驗(yàn)來(lái)確定最終參數(shù)配置的方案.

2)基于規(guī)則的參數(shù)優(yōu)化方法能幫助用戶根據(jù)專家的經(jīng)驗(yàn)、在線教程或調(diào)優(yōu)說(shuō)明進(jìn)行參數(shù)優(yōu)化.

3)基于模型的參數(shù)優(yōu)化方法通過(guò)深入了解系統(tǒng)內(nèi)部建立有效的性能模型,建立模型需要大量專家知識(shí),不需要或僅需要少量的性能樣本.

4)基于搜索的參數(shù)優(yōu)化方法基于搜索算法和當(dāng)前系統(tǒng)性能反饋的指導(dǎo),在不同的參數(shù)配置下反復(fù)執(zhí)行某一工作負(fù)載,從而找到最佳性能下的參數(shù)配置.

5)基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法把數(shù)據(jù)庫(kù)系統(tǒng)視為黑盒,不需要對(duì)系統(tǒng)內(nèi)部深入理解,通過(guò)性能樣本和機(jī)器學(xué)習(xí)方法構(gòu)建性能預(yù)測(cè)模型.

6)基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法通過(guò)將數(shù)據(jù)庫(kù)參數(shù)優(yōu)化場(chǎng)景映射到強(qiáng)化學(xué)習(xí)中,來(lái)尋找最優(yōu)的參數(shù)配置,這種方式既不需要先驗(yàn)知識(shí),也無(wú)需對(duì)復(fù)雜的性能曲面進(jìn)行擬合.

7)變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法將遷移學(xué)習(xí)的概念引入數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化中,可以隨著環(huán)境的變化調(diào)整性能預(yù)測(cè)模型或推薦最優(yōu)參數(shù)配置.

下文將對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的各種參數(shù)優(yōu)化方法進(jìn)行深入分析和比較,并對(duì)每種方法的優(yōu)缺點(diǎn)進(jìn)行歸納總結(jié).通過(guò)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)中具有代表性的參數(shù)優(yōu)化技術(shù)進(jìn)行全面的回顧和分析,本文有益于啟發(fā)新的參數(shù)優(yōu)化技術(shù)及其實(shí)際應(yīng)用,并且可以作為選擇和比較現(xiàn)有參數(shù)優(yōu)化方法的技術(shù)參考資料.具體來(lái)說(shuō),本文的主要貢獻(xiàn)有3 個(gè)方面:

1)對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化進(jìn)行了問(wèn)題定義,并提供了相關(guān)方法的一般分類.

2)對(duì)現(xiàn)有代表性參數(shù)優(yōu)化方法的關(guān)鍵特性進(jìn)行了詳細(xì)描述.

3)介紹了未來(lái)的研究問(wèn)題與挑戰(zhàn),并展示了參數(shù)優(yōu)化是一個(gè)具有挑戰(zhàn)性的研究領(lǐng)域,其解決方案將廣泛應(yīng)用于現(xiàn)實(shí)世界用例中.

通過(guò)對(duì)相關(guān)綜述工作進(jìn)行搜索整理,目前已有一些研究數(shù)據(jù)庫(kù)系統(tǒng)查詢優(yōu)化的綜述論文[7-9].查詢優(yōu)化是一個(gè)較為成熟的研究領(lǐng)域,但關(guān)注點(diǎn)主要集中在優(yōu)化查詢執(zhí)行計(jì)劃,或索引和物化視圖的創(chuàng)建,忽略了配置參數(shù)的優(yōu)化.本文關(guān)注的參數(shù)優(yōu)化問(wèn)題可以優(yōu)化整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的性能,進(jìn)而優(yōu)化查詢性能.同時(shí),也存在一些對(duì)自動(dòng)參數(shù)優(yōu)化方法進(jìn)行研究的綜述文章[10-11],它們的研究對(duì)象是大數(shù)據(jù)處理系統(tǒng)和啟發(fā)式算法,而不是本文關(guān)注的數(shù)據(jù)庫(kù)系統(tǒng).此外,機(jī)器學(xué)習(xí)技術(shù)在數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)管理技術(shù)中的應(yīng)用也是目前的研究熱點(diǎn)之一[6,12-15],數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化問(wèn)題是其中關(guān)心的問(wèn)題之一,在這部分綜述中的相關(guān)討論還不夠詳細(xì)和深入.文獻(xiàn)[6,12-15]所述的工作著重綜述了固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方案,本文添加了對(duì)變化環(huán)境下數(shù)據(jù)庫(kù)參數(shù)優(yōu)化和性能預(yù)測(cè)方案的討論.文獻(xiàn)[16]中也有對(duì)變化環(huán)境下數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法的介紹,但主要集中于工作負(fù)載變化場(chǎng)景,即自適應(yīng)參數(shù)優(yōu)化方法.文獻(xiàn)[17]同樣關(guān)注于工作負(fù)載變化場(chǎng)景,并將工作負(fù)載感知的數(shù)據(jù)庫(kù)性能優(yōu)化分為3 個(gè)方向:工作負(fù)載分類、工作負(fù)載預(yù)測(cè)和基于工作負(fù)載的調(diào)優(yōu).本文則對(duì)3 種不同類型的環(huán)境變化場(chǎng)景下的參數(shù)優(yōu)化工作進(jìn)行了分類介紹.此外,Van Aken 等人[18]也針對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)的參數(shù)優(yōu)化問(wèn)題進(jìn)行了研究,但重點(diǎn)關(guān)注基于機(jī)器學(xué)習(xí)方法的自動(dòng)參數(shù)調(diào)優(yōu)服務(wù)在實(shí)際生產(chǎn)環(huán)境中進(jìn)行應(yīng)用的效果,并沒(méi)有對(duì)相關(guān)工作進(jìn)行全面的總結(jié)分析.本文著眼于數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化問(wèn)題,對(duì)相關(guān)工作進(jìn)行歸納總結(jié),并進(jìn)行了詳細(xì)和深入的分析,從而幫助廣大研究人員充分了解當(dāng)前數(shù)據(jù)庫(kù)參數(shù)優(yōu)化技術(shù)的發(fā)展情況.

1 研究問(wèn)題

圖1 是數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化問(wèn)題的示意圖.給定待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)、系統(tǒng)的工作環(huán)境和優(yōu)化過(guò)程中的資源約束,參數(shù)優(yōu)化問(wèn)題的目標(biāo)是通過(guò)調(diào)節(jié)該系統(tǒng)的可配置參數(shù)來(lái)優(yōu)化系統(tǒng)的性能指標(biāo).具體來(lái)說(shuō),該問(wèn)題包含待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)、工作環(huán)境、優(yōu)化約束、配置參數(shù)和系統(tǒng)性能5 個(gè)概念,下面分別進(jìn)行定義.

Fig.1 Overview of parameter tuning problem for database systems圖1 數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化問(wèn)題示意圖

1)待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)(system under tune,S).待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)是需要進(jìn)行參數(shù)優(yōu)化的數(shù)據(jù)庫(kù)系統(tǒng),通常具有大量的可配置參數(shù).

2)工作環(huán)境(environment,E).數(shù)據(jù)庫(kù)系統(tǒng)部署和使用的不同方式被稱為工作環(huán)境.數(shù)據(jù)庫(kù)的工作環(huán)境主要包括3 個(gè)因素:1)工作負(fù)載(workload,W);2)硬件配置(hardware,H);3)軟件版本(version,V).上述3 個(gè)因素分別對(duì)應(yīng)的是系統(tǒng)運(yùn)行的輸入、系統(tǒng)的硬件配置和軟件的版本狀態(tài).其中,工作負(fù)載是指數(shù)據(jù)庫(kù)系統(tǒng)需要完成的業(yè)務(wù)或查詢?nèi)蝿?wù),例如,需要執(zhí)行的事務(wù)集合、需要完成的查詢請(qǐng)求等.在參數(shù)優(yōu)化問(wèn)題中,優(yōu)化人員通常無(wú)法事先了解工作負(fù)載的內(nèi)部細(xì)節(jié),僅可以通過(guò)實(shí)驗(yàn)的方法測(cè)量數(shù)據(jù)庫(kù)系統(tǒng)在該工作負(fù)載下的性能,而不進(jìn)一步考慮其內(nèi)部結(jié)構(gòu).本文將一個(gè)工作環(huán)境形式化地表示為e=(w,h,v),w∈W,h∈H,v∈V,其中W,H,V分別表示所有可能的工作負(fù)載變化W、所有可能的硬件變化空間H,以及所有可能的軟件版本V.因此,環(huán)境空間可以定義為E=W×H×V,且e∈E.

3)配置參數(shù)(configuration,C).為了提高性能和靈活性,待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)通常會(huì)提供大量的參數(shù),鼓勵(lì)使用者根據(jù)不同的工作環(huán)境進(jìn)行個(gè)性化配置,以獲得最佳的系統(tǒng)性能體驗(yàn).本文將待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)S的所有可配置參數(shù)記為集合c={c1,c2,…,cn},其中ci表示某個(gè)具體的參數(shù),n表示參數(shù)的總數(shù)量,c∈C.為了避免混淆,本文使用術(shù)語(yǔ)“配置參數(shù)”表示所有可配置的參數(shù)構(gòu)成的集合,用“配置”表示配置參數(shù)的一組完整取值,用“參數(shù)”表示配置參數(shù)集合中某個(gè)具體的參數(shù),用“參數(shù)值”表示該參數(shù)的具體取值.

4)系統(tǒng)性能(performance,P).數(shù)據(jù)庫(kù)的系統(tǒng)性能是用來(lái)度量待優(yōu)化系統(tǒng)優(yōu)化效果的指標(biāo),常見(jiàn)的性能指標(biāo)包括響應(yīng)時(shí)間、吞吐量、每秒處理的事務(wù)數(shù)量等.系統(tǒng)性能通常與系統(tǒng)需要完成的業(yè)務(wù)相關(guān),由用戶與系統(tǒng)設(shè)計(jì)人員共同確定,并具有可測(cè)量、可量化、可比較等重要特征.本文將系統(tǒng)性能記做函數(shù)P(·),并用P(s,e,c)表示某個(gè)待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)s在工作環(huán)境e和配置參數(shù)c下的具體性能取值,s∈S.

5)優(yōu)化約束(constraint,R).由于待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)通常會(huì)成為承載企業(yè)實(shí)際應(yīng)用的系統(tǒng),需要快速上線并長(zhǎng)期運(yùn)行,因此對(duì)參數(shù)優(yōu)化過(guò)程有著較為嚴(yán)格的限制和約束,其中最常見(jiàn)的約束條件是優(yōu)化時(shí)間.由于待優(yōu)化系統(tǒng)在不同參數(shù)配置下運(yùn)行時(shí)間可能差異較大,為了簡(jiǎn)化并確定約束條件,本文將優(yōu)化時(shí)間約束轉(zhuǎn)換為系統(tǒng)測(cè)試次數(shù)約束(記作T),即嚴(yán)格限制系統(tǒng)在不同參數(shù)配置下的性能測(cè)量次數(shù),記做T≤N,N表示限制最大系統(tǒng)測(cè)試次數(shù).

基于上述5 個(gè)定義,數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化問(wèn)題定義為:

其中式(1)表示優(yōu)化問(wèn)題的目標(biāo)是通過(guò)在合法的配置參數(shù)空間中進(jìn)行探索,找到在特定工作環(huán)境e下,能夠使得某個(gè)待優(yōu)化目標(biāo)系統(tǒng)s取得最優(yōu)性能的配置c.式(2)表明該問(wèn)題有著非常嚴(yán)格的約束條件,即能夠?qū)Υ齼?yōu)化數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行測(cè)試的次數(shù)T不能大于預(yù)先設(shè)定的上限值N.

在對(duì)研究問(wèn)題進(jìn)行形式化定義的基礎(chǔ)上,本文從問(wèn)題層面出發(fā),根據(jù)參數(shù)優(yōu)化過(guò)程是否涉及環(huán)境變化,分別從2 個(gè)角度對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化技術(shù)進(jìn)行了綜述:首先總結(jié)分析在固定工作環(huán)境下進(jìn)行參數(shù)優(yōu)化的方法;隨后,介紹變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法;最后,對(duì)研究現(xiàn)狀進(jìn)行總結(jié),并指出未來(lái)的研究方向與挑戰(zhàn).

2 固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法

近年來(lái),隨著物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等技術(shù)的興起,對(duì)不同環(huán)境下快速進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)參數(shù)優(yōu)化的需求日益迫切,目前已經(jīng)有很多相關(guān)研究成果.根據(jù)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法本身是否具有學(xué)習(xí)能力,本文可以將這些方法大體分成傳統(tǒng)的參數(shù)優(yōu)化方法和基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法2 類.其中,傳統(tǒng)的參數(shù)優(yōu)化方法可進(jìn)一步細(xì)分為手工參數(shù)優(yōu)化方法、基于規(guī)則的參數(shù)優(yōu)化方法、基于模型的參數(shù)優(yōu)化方法和基于搜索的參數(shù)優(yōu)化方法;基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法可根據(jù)采用的機(jī)器學(xué)習(xí)技術(shù)進(jìn)一步分為基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法和基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法.

2.1 傳統(tǒng)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法

2.1.1 手工參數(shù)優(yōu)化方法

傳統(tǒng)的手工參數(shù)優(yōu)化方法完全依賴于DBA 的經(jīng)驗(yàn).通過(guò)不斷地進(jìn)行手工實(shí)驗(yàn)獲取專家經(jīng)驗(yàn),再根據(jù)這些專家經(jīng)驗(yàn)確定最終的參數(shù)配置.這種手工參數(shù)優(yōu)化方法雖然能夠在一定程度上解決問(wèn)題,但在有效性方面存在嚴(yán)重問(wèn)題.一方面,數(shù)據(jù)庫(kù)的參數(shù)空間通常具有高維且復(fù)雜的特點(diǎn),通過(guò)少量的手工實(shí)驗(yàn)來(lái)獲取足夠的專家知識(shí)對(duì)DBA 是一項(xiàng)非常艱巨的任務(wù);另一方面,DBA 需要根據(jù)應(yīng)用程序的操作調(diào)整數(shù)據(jù)庫(kù)參數(shù),然而這需要進(jìn)行大量的實(shí)驗(yàn)迭代.這種不斷試錯(cuò)的方法是非常耗時(shí)的,因此DBA 往往需要數(shù)天甚至數(shù)周的時(shí)間來(lái)進(jìn)行數(shù)據(jù)庫(kù)參數(shù)優(yōu)化,這將造成大量的人力、資源成本開(kāi)銷.

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

DBA 負(fù)責(zé)執(zhí)行監(jiān)控或維護(hù)數(shù)據(jù)庫(kù)環(huán)境相關(guān)的任務(wù),典型的參數(shù)優(yōu)化是以他們的專業(yè)知識(shí)和經(jīng)驗(yàn)為基礎(chǔ)的,根據(jù)規(guī)則和指南配置參數(shù)也是常用的輔助決策方法.這種方法通常是數(shù)據(jù)庫(kù)廠商針對(duì)某種數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)的,通過(guò)獲取數(shù)據(jù)庫(kù)狀態(tài)、性能以及部分配置參數(shù)對(duì)數(shù)據(jù)庫(kù)性能的影響,為參數(shù)的設(shè)置提供建議.舉例來(lái)說(shuō),MySQLTuner[19]是一款用于分析MySQL 配置和性能的工具,通過(guò)在數(shù)據(jù)庫(kù)運(yùn)行時(shí)獲取數(shù)據(jù)庫(kù)的狀態(tài)數(shù)據(jù)和當(dāng)前的配置參數(shù),并基于規(guī)則給出一些參數(shù)調(diào)整的基本建議.類似的針對(duì)特定版本和類型的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化指南還有Oracle 數(shù)據(jù)庫(kù)性能調(diào)優(yōu)指南[20]、IBM 調(diào)優(yōu)指南[21]、Azure SQL 數(shù)據(jù)庫(kù)的自動(dòng)調(diào)優(yōu)指南[22].此外,當(dāng)數(shù)據(jù)庫(kù)成為主要的企業(yè)級(jí)瓶頸時(shí),WebLogic[23]提供的調(diào)優(yōu)指導(dǎo)能夠配置數(shù)據(jù)庫(kù)以獲得最佳性能,包括一些通用的數(shù)據(jù)庫(kù)調(diào)優(yōu)建議和適用于Oracle,SQL Server,Sybase 數(shù)據(jù)庫(kù)的調(diào)優(yōu)建議,其中給出了一些重要參數(shù)及其推薦值.

錯(cuò)誤的參數(shù)配置是許多開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)查詢失敗的主要原因之一.針對(duì)這一問(wèn)題,SPEX[4]通過(guò)軟件源代碼推斷配置需求,并進(jìn)一步揭露錯(cuò)誤配置漏洞,診斷容易出錯(cuò)的配置.SPEX 將不同類型的錯(cuò)誤配置漏洞進(jìn)行分類,并在此基礎(chǔ)上檢測(cè)和預(yù)防某些易出錯(cuò)配置.具體來(lái)說(shuō),SPEX 引入配置約束來(lái)幫助定義配置需求,這種約束包含參數(shù)的數(shù)據(jù)類型和取值范圍,以及與其他參數(shù)的依賴關(guān)系或相關(guān)性.SPEX 通過(guò)這些約束可以自動(dòng)分析參數(shù)配置是否合理,并幫助實(shí)現(xiàn)參數(shù)的正確配置.

Xu 等人[24]還研究了一個(gè)與參數(shù)相關(guān)的基本問(wèn)題,即篩選出對(duì)于系統(tǒng)性能優(yōu)化和可靠性任務(wù)而言最重要的參數(shù).該研究針對(duì)這一問(wèn)題提出了一些具體而有效的指導(dǎo)方針,能夠顯著降低參數(shù)配置空間.指導(dǎo)方針包括:1)理解實(shí)踐中使用的配置參數(shù);2)降低過(guò)度設(shè)計(jì)帶來(lái)的配置復(fù)雜性.對(duì)于指導(dǎo)方針1,Xu 等人[24]認(rèn)為:①許多參數(shù)既沒(méi)有必要也沒(méi)有價(jià)值;②簡(jiǎn)化枚舉類型的參數(shù)可以簡(jiǎn)化配置,且不會(huì)顯著降低系統(tǒng)靈活性;③過(guò)多的參數(shù)使尋找最優(yōu)參數(shù)配置變得非常復(fù)雜;④大量用戶僅設(shè)置具有顯式外部影響的參數(shù).對(duì)于指導(dǎo)方針2,Xu 等人[24]展示了可以在對(duì)用戶影響很小的情況下簡(jiǎn)化參數(shù)配置.此外,還研究了關(guān)鍵字搜索、基于自然語(yǔ)言處理(NLP)的導(dǎo)引、谷歌搜索[25]等配置導(dǎo)引方法,并提供了配置導(dǎo)引相關(guān)的經(jīng)驗(yàn)法則.上述2 個(gè)指導(dǎo)方針均針對(duì)不同類別的軟件系統(tǒng)進(jìn)行了深入分析,包括數(shù)據(jù)庫(kù)系統(tǒng)在內(nèi),例如MySQL 和PostgreSQL.

基于規(guī)則的參數(shù)優(yōu)化方法能夠幫助用戶根據(jù)專家經(jīng)驗(yàn)、在線教程或參數(shù)優(yōu)化說(shuō)明對(duì)系統(tǒng)參數(shù)進(jìn)行調(diào)優(yōu).這類方法通常不需要模型,適合快速引導(dǎo)系統(tǒng),但是基于規(guī)則的方法也具有較多的局限性,例如通常面向特定的數(shù)據(jù)庫(kù)類型,甚至是特定的版本,應(yīng)用的場(chǎng)景受限,同時(shí)也無(wú)法應(yīng)對(duì)變化的數(shù)據(jù)庫(kù)環(huán)境,因此通常無(wú)法在復(fù)雜的配置空間中取得很好的優(yōu)化效果.

2.1.3 基于模型的參數(shù)優(yōu)化方法

基于模型的參數(shù)優(yōu)化方法通常基于對(duì)系統(tǒng)組件的深入理解來(lái)建立性能模型,需要大量使用專家知識(shí),不需要或僅需要少量的性能樣本.

在21 世紀(jì)初,IBM 發(fā)布了DB2 性能向?qū)Чぞ遊26],該工具詢問(wèn)DBA 關(guān)于應(yīng)用程序的問(wèn)題,例如工作負(fù)載是聯(lián)機(jī)事務(wù)處理(on-line transaction processing,OLTP)還是聯(lián)機(jī)分析處理(on-line analytical processing,OLAP)類型,然后根據(jù)DBA 的答案提供參數(shù)設(shè)置.該性能向?qū)Чぞ呋贒B2 工程師手工創(chuàng)建的模型,因此可能無(wú)法精確地反映實(shí)際的工作負(fù)載或操作環(huán)境.IBM后來(lái)發(fā)布了帶有自調(diào)優(yōu)內(nèi)存管理器的DB2 版本,用來(lái)確定如何分配數(shù)據(jù)庫(kù)管理系統(tǒng)(database management systems,DBMS)的內(nèi)存[27-28].

自調(diào)優(yōu)內(nèi)存管理器(self-tuning memory management,STMM)[27]通過(guò)運(yùn)行時(shí)建模、成本效益分析和系統(tǒng)級(jí)資源分析,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)內(nèi)存分配的自動(dòng)調(diào)優(yōu).具體來(lái)說(shuō),STMM 包含1 個(gè)內(nèi)存控制器,在每個(gè)調(diào)優(yōu)周期中評(píng)估不同組件的內(nèi)存分布,并確定是否可以通過(guò)數(shù)據(jù)庫(kù)內(nèi)存重新分配來(lái)提高系統(tǒng)性能.此外,調(diào)優(yōu)周期的頻率會(huì)根據(jù)工作負(fù)載復(fù)雜性或資源可用性的變化而發(fā)生改變,從而實(shí)現(xiàn)自適應(yīng)的性能調(diào)優(yōu).

Tian 等人[28]則研究了緩沖池大小的配置問(wèn)題.DB2 將緩沖區(qū)域劃分為許多獨(dú)立的緩沖池,為每個(gè)緩沖池設(shè)置適當(dāng)?shù)拇笮?duì)于實(shí)現(xiàn)最佳性能至關(guān)重要.Tian 等人[28]提出了2 種成本模型,分別基于頁(yè)面錯(cuò)誤和數(shù)據(jù)訪問(wèn)時(shí)間,并通過(guò)貪心算法來(lái)尋找最優(yōu)解.最后,通過(guò)實(shí)驗(yàn)驗(yàn)證了文獻(xiàn)[28]所提方案的有效性,結(jié)果表明,基于數(shù)據(jù)訪問(wèn)時(shí)間的成本模型在優(yōu)化緩沖池大小方面比基于頁(yè)面錯(cuò)誤的成本模型更有效.

Oracle 開(kāi)發(fā)了類似的內(nèi)部監(jiān)控系統(tǒng)[29],用來(lái)識(shí)別DBMS 內(nèi)部組件配置錯(cuò)誤造成的性能瓶頸,并通過(guò)向DBA 提供可操作的建議來(lái)緩解性能瓶頸.自動(dòng)數(shù)據(jù)庫(kù)診斷監(jiān)視器(automatic database diagnostic monitor,ADDM)[29]通過(guò)自動(dòng)化診斷性能問(wèn)題,并提出適當(dāng)?shù)恼{(diào)優(yōu)建議,從而最大限度地提高數(shù)據(jù)庫(kù)吞吐量.為了對(duì)比不同數(shù)據(jù)庫(kù)組件對(duì)性能的影響,ADDM 定義了一種新的度量方法——數(shù)據(jù)庫(kù)時(shí)間,為數(shù)據(jù)庫(kù)中任何資源或活動(dòng)對(duì)性能的影響提供了一個(gè)通用的衡量標(biāo)準(zhǔn).該度量方法可以用于識(shí)別需要實(shí)驗(yàn)的數(shù)據(jù)庫(kù)組件,并量化數(shù)據(jù)庫(kù)性能的瓶頸.最后,ADDM 通過(guò)為數(shù)據(jù)庫(kù)組件構(gòu)建有向無(wú)環(huán)圖來(lái)識(shí)別產(chǎn)生性能問(wèn)題的根本原因.通過(guò)對(duì)各種可能的替代方案進(jìn)行仿真來(lái)估計(jì)對(duì)數(shù)據(jù)庫(kù)的特定組件或功能的影響.例如,當(dāng)研究?jī)?nèi)存參數(shù)設(shè)置的問(wèn)題時(shí),ADDM 將對(duì)不同緩沖區(qū)大小的運(yùn)行時(shí)間進(jìn)行仿真,并推薦合適的參數(shù)值.

與IBM 的工具一樣,Oracle 系統(tǒng)采用基于性能度量的啟發(fā)式方法來(lái)管理內(nèi)存分配,因此無(wú)法對(duì)所有參數(shù)進(jìn)行優(yōu)化.Oracle 的后續(xù)版本包含SQL analyzer工具,可以評(píng)估DBMS 的不同變體對(duì)性能的影響,例如升級(jí)到某一新版本或更改系統(tǒng)的配置[30-31].微軟的SQL Server[32]也采用了這種方法.但是對(duì)于DBMS 來(lái)說(shuō),這些工具仍然需要DBA 的參與,如提供需要更改的參數(shù)設(shè)置,然后這些工具對(duì)該更改執(zhí)行實(shí)驗(yàn).最終DBA 根據(jù)工具報(bào)告的結(jié)果進(jìn)行決策.

Tran 等人[33]提出了一種基于buffer miss 的緩沖池調(diào)優(yōu)方法.通過(guò)基于分析模型推導(dǎo)得出的公式擬合可用數(shù)據(jù),然后利用公式指導(dǎo)調(diào)優(yōu).Sullivan 等人[34]通過(guò)影響圖來(lái)建模配置參數(shù)之間的概率相關(guān)性,用參數(shù)之間的條件獨(dú)立性來(lái)推斷特定DBMS 配置的預(yù)期結(jié)果.然而,這些影響圖必須由領(lǐng)域?qū)<沂謩?dòng)創(chuàng)建,因此該方法每次只能調(diào)優(yōu)少量參數(shù).DBSherlock[35]工具通過(guò)比較DBMS 性能時(shí)間序列數(shù)據(jù)中運(yùn)行緩慢的區(qū)域和運(yùn)行正常的區(qū)域來(lái)幫助DBA 診斷數(shù)據(jù)庫(kù)中的性能問(wèn)題.與此同時(shí),DBA 診斷的根本原因?qū)⒈患{入算法作為新的因果模型,從而改善未來(lái)的性能診斷.

Wei 等人[36]則提出一種基于模糊規(guī)則的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法.首先,根據(jù)數(shù)據(jù)庫(kù)的自動(dòng)負(fù)載倉(cāng)庫(kù)報(bào)表獲取數(shù)據(jù)庫(kù)系統(tǒng)的關(guān)鍵參數(shù)和性能指標(biāo).其次,通過(guò)識(shí)別參數(shù)和性能指標(biāo)之間的關(guān)系來(lái)構(gòu)造調(diào)優(yōu)相關(guān)的模糊規(guī)則.最后,開(kāi)發(fā)了一種基于模糊規(guī)則的自適應(yīng)參數(shù)優(yōu)化算法,可以通過(guò)調(diào)優(yōu)多個(gè)參數(shù)提升性能,為DBA 推薦滿足性能需求的參數(shù)配置.

基于模型的參數(shù)優(yōu)化方法在實(shí)際工程中得到大量應(yīng)用,但仍然存在一些問(wèn)題:1)構(gòu)建的性能模型通用性較差,對(duì)于不同的數(shù)據(jù)庫(kù)類型或不同的應(yīng)用場(chǎng)景都無(wú)法直接應(yīng)用,需要重新構(gòu)建;2)每次分析建模過(guò)程都需要從零開(kāi)始,無(wú)法利用過(guò)往的參數(shù)優(yōu)化經(jīng)驗(yàn).

2.1.4 基于搜索的參數(shù)優(yōu)化方法

基于搜索的參數(shù)優(yōu)化方法將數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化建模為一個(gè)黑盒優(yōu)化問(wèn)題,并試圖采用搜索算法解決該問(wèn)題,搜索的目的是為了評(píng)估不同的參數(shù)配置,并找到獲取最優(yōu)性能的參數(shù)配置.

Zhu 等人[37]提出一個(gè)針對(duì)多種系統(tǒng)的參數(shù)優(yōu)化框架BestConfig,該框架在指定優(yōu)化時(shí)間約束、待優(yōu)化系統(tǒng)和資源配置的條件下,采用劃分和分支采樣方法、遞歸界限搜索算法自動(dòng)對(duì)該系統(tǒng)的配置參數(shù)進(jìn)行優(yōu)化.在方法評(píng)估部分對(duì)包括MySQL 和Cassandra數(shù)據(jù)庫(kù)在內(nèi)的6 種軟件系統(tǒng)進(jìn)行了實(shí)驗(yàn)驗(yàn)證.

基于搜索的參數(shù)優(yōu)化方法能夠直接在參數(shù)空間中進(jìn)行搜索,無(wú)需深入系統(tǒng)內(nèi)部的先驗(yàn)知識(shí),方法的適應(yīng)性較強(qiáng).然而,這類方法難以利用優(yōu)化過(guò)程中已有的知識(shí)和規(guī)律,優(yōu)化效果通常不佳.

通過(guò)對(duì)比和分析可以看出,傳統(tǒng)的方法在給定的優(yōu)化約束條件下往往不能得到最優(yōu)的效果,因此并不是解決數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題時(shí)的最好選擇.另一方面,傳統(tǒng)方法對(duì)于每次參數(shù)優(yōu)化任務(wù)都需要重新進(jìn)行整個(gè)參數(shù)優(yōu)化過(guò)程,不能充分利用過(guò)往調(diào)優(yōu)任務(wù)中已獲取的數(shù)據(jù)和知識(shí)來(lái)進(jìn)一步提升調(diào)優(yōu)效果.這一問(wèn)題不僅會(huì)浪費(fèi)大量的時(shí)間和資源成本,也大大限制了參數(shù)優(yōu)化能力的提升.

2.2 基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法

隨著機(jī)器學(xué)習(xí)技術(shù)的不斷發(fā)展與成熟,目前機(jī)器學(xué)習(xí)已經(jīng)作為一種基礎(chǔ)服務(wù)技術(shù),在醫(yī)療、汽車等不同領(lǐng)域中進(jìn)行應(yīng)用,具備了一定的解決實(shí)際問(wèn)題的能力.因此,許多研究人員試圖通過(guò)機(jī)器學(xué)習(xí)技術(shù)來(lái)解決傳統(tǒng)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法中的不足與限制.

傳統(tǒng)的參數(shù)優(yōu)化方法通常需要大量專家知識(shí)去制定有效的規(guī)則和建立可靠的模型,或者通過(guò)不斷采樣對(duì)參數(shù)空間進(jìn)行搜索的方式尋找最優(yōu)參數(shù)配置.不同于傳統(tǒng)參數(shù)優(yōu)化方法,機(jī)器學(xué)習(xí)可以通過(guò)在大量數(shù)據(jù)中學(xué)習(xí)獲取輸入空間到輸出空間的映射關(guān)系,從而能對(duì)任意輸入的輸出進(jìn)行較為準(zhǔn)確的預(yù)測(cè).在參數(shù)優(yōu)化問(wèn)題中,由于參數(shù)空間巨大且復(fù)雜,收集訓(xùn)練樣本費(fèi)時(shí)費(fèi)力,獲取大量的有標(biāo)簽樣本是非常困難的.因此,進(jìn)行有效的參數(shù)選擇(特征選擇)以及選用合適的機(jī)器學(xué)習(xí)模型是至關(guān)重要的.

2.2.1 參數(shù)選擇方法

在參數(shù)選擇方面,盡管數(shù)據(jù)庫(kù)系統(tǒng)中存在數(shù)百個(gè)配置參數(shù),但并不是每個(gè)配置參數(shù)都會(huì)對(duì)系統(tǒng)性能產(chǎn)生顯著影響.為了避免時(shí)間和精力被浪費(fèi)在調(diào)整那些可能對(duì)性能沒(méi)有影響或影響較小的參數(shù)上,識(shí)別影響最大的參數(shù)對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化任務(wù)是至關(guān)重要的.目前,最常用的方法是根據(jù)專家經(jīng)驗(yàn)來(lái)選擇參數(shù),同時(shí)也有一些研究人員嘗試使用機(jī)器學(xué)習(xí)或其他技術(shù)來(lái)排序或識(shí)別與性能相關(guān)性較強(qiáng)的重要參數(shù),例如Lasso[3]和方差分析(analysis of variance,ANOVA)[38]等.

SARD[39]是一種基于Plackett &Burman 統(tǒng)計(jì)設(shè)計(jì)方法的數(shù)據(jù)庫(kù)參數(shù)排序統(tǒng)計(jì)方法.SARD 將查詢工作負(fù)載和配置參數(shù)的數(shù)量作為輸入,僅需要進(jìn)行線性數(shù)量的實(shí)驗(yàn),就可以獲得數(shù)據(jù)庫(kù)參數(shù)對(duì)DBMS 性能產(chǎn)生影響大小的排序列表.

Lima 等人[40]則采用了一種包裹式特征選擇方法——遞歸特征消除(recursive feature elimination,RFE),通過(guò)有監(jiān)督學(xué)習(xí)方法來(lái)評(píng)估參數(shù)子集的質(zhì)量,迭代地減少數(shù)據(jù)庫(kù)參數(shù)集.該監(jiān)督學(xué)習(xí)算法在這個(gè)過(guò)程中扮演2 個(gè)角色:1)通過(guò)評(píng)估預(yù)測(cè)的性能指標(biāo)來(lái)評(píng)估一組參數(shù)的質(zhì)量;2)利用線性回歸(給變量賦權(quán))或決策樹(shù)(計(jì)算每個(gè)變量的基尼系數(shù))等方法,對(duì)參數(shù)的重要性進(jìn)行排序.并在此基礎(chǔ)上進(jìn)行性能預(yù)測(cè)模型構(gòu)建,根據(jù)數(shù)據(jù)庫(kù)和工作負(fù)載參數(shù)的值對(duì)性能指標(biāo)進(jìn)行預(yù)測(cè).構(gòu)建性能預(yù)測(cè)模型采用了3 種不同的機(jī)器學(xué)習(xí)模型:梯度提升機(jī)(gradient boosting machine,GBM)、隨機(jī)森林(random forest,RF)和決策樹(shù)(decision tree,DT),這些非線性模型也可以評(píng)估參數(shù)子集的質(zhì)量.實(shí)驗(yàn)結(jié)果表明用參數(shù)子集訓(xùn)練的模型比用整個(gè)參數(shù)集訓(xùn)練的模型更準(zhǔn)確,證明了進(jìn)行參數(shù)選擇的必要性.

根據(jù)參數(shù)優(yōu)化方法中使用的不同機(jī)器學(xué)習(xí)模型,本文可以將現(xiàn)有研究成果分為基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法和基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法2 類,如表1 所示.表1 中羅列了基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化和性能預(yù)測(cè)方法,以及方法中所使用的機(jī)器學(xué)習(xí)技術(shù)、訓(xùn)練難度以及實(shí)現(xiàn)目標(biāo).其中,訓(xùn)練難度通過(guò)綜合考量機(jī)器學(xué)習(xí)模型復(fù)雜度、技術(shù)難易度以及訓(xùn)練時(shí)長(zhǎng)進(jìn)行評(píng)價(jià),星號(hào)越多表示訓(xùn)練難度較高.

2.2.2 基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法

針對(duì)某個(gè)數(shù)據(jù)庫(kù)系統(tǒng),基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法首先需要對(duì)不同配置參數(shù)取值下的系統(tǒng)性能進(jìn)行采樣,然后基于訓(xùn)練樣本構(gòu)建性能預(yù)測(cè)模型,最后基于性能預(yù)測(cè)模型,采用某種搜索算法尋找最優(yōu)配置.由于性能預(yù)測(cè)模型是參數(shù)優(yōu)化的基礎(chǔ),本文中也考慮了部分與參數(shù)優(yōu)化相關(guān)的性能預(yù)測(cè)方法.

Table 1 Machine Learning-Based Parameter Tuning and Performance Prediction Approaches for Database Systems表1 基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化與性能預(yù)測(cè)方法

iTuned[1]是一個(gè)基于機(jī)器學(xué)習(xí)方法自動(dòng)識(shí)別最優(yōu)數(shù)據(jù)庫(kù)參數(shù)配置的工具,通過(guò)2 個(gè)步驟搜索參數(shù)空間.首先,通過(guò)拉丁超立方體采樣(latin hypercube sampling,LHS)在備份環(huán)境中選擇初始樣本.接下來(lái),iTuned 基于上一步獲取的樣本構(gòu)建了基于高斯過(guò)程模型的性能曲面,并根據(jù)預(yù)期改進(jìn)函數(shù)選擇下一個(gè)采樣點(diǎn),在該采樣點(diǎn)對(duì)應(yīng)的參數(shù)配置下再次進(jìn)行實(shí)驗(yàn),得到實(shí)驗(yàn)結(jié)果后更新性能曲面.之后不斷循環(huán)迭代,直到取得滿意的性能值后終止這一過(guò)程.在這一過(guò)程中,基于高斯過(guò)程模型的性能曲面將與實(shí)際性能曲面不斷接近,iTuned 也可以盡快尋找到最佳參數(shù)配置.

與iTuned 類似,OtterTune[3,41]也提出了一種自動(dòng)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化策略,它的創(chuàng)新之處在于可以利用以前參數(shù)優(yōu)化的經(jīng)驗(yàn),并結(jié)合新的樣本來(lái)優(yōu)化數(shù)據(jù)庫(kù)參數(shù).為了實(shí)現(xiàn)這一目標(biāo),OtterTune 綜合使用了有監(jiān)督和無(wú)監(jiān)督的機(jī)器學(xué)習(xí)方法.圖2 顯示了整個(gè)流程,包括3 個(gè)階段:1)工作負(fù)載特性描述(刪除冗余度量指標(biāo));2)重要參數(shù)識(shí)別;3)自動(dòng)調(diào)優(yōu).在階段1 中,OtterTune 首先利用因子分析將高維度量數(shù)據(jù)降維成為低維度量數(shù)據(jù),然后使用k-means 將低維數(shù)據(jù)聚類成有意義的分組.通過(guò)這2 種降維技術(shù)能夠有效地去除冗余度量指標(biāo),并進(jìn)一步使用這些內(nèi)部運(yùn)行時(shí)的度量對(duì)工作負(fù)載的行為進(jìn)行描述,以便識(shí)別數(shù)據(jù)儲(chǔ)存庫(kù)中相似的工作負(fù)載.這使得OtterTune 能夠利用從以前的調(diào)優(yōu)任務(wù)中收集到的信息,幫助在新的應(yīng)用程序下搜索表現(xiàn)良好的參數(shù)配置.在階段2 中,Otter-Tune 選擇對(duì)目標(biāo)性能影響最大的重要參數(shù)集,減少調(diào)優(yōu)參數(shù)的數(shù)量能夠有效降低需要考慮的參數(shù)配置的總數(shù),從而減少機(jī)器學(xué)習(xí)算法的搜索空間.因此,本階段使用Lasso[52]來(lái)篩選與系統(tǒng)整體性能相關(guān)性最強(qiáng)的參數(shù),并確定參數(shù)的重要性順序.在階段3 中,OtterTune 的目標(biāo)是推薦性能最優(yōu)的配置.OtterTune首先根據(jù)階段1 選擇的工作負(fù)載特征,將數(shù)據(jù)儲(chǔ)存庫(kù)中最相似的工作負(fù)載與當(dāng)前工作負(fù)載進(jìn)行匹配,最后使用高斯過(guò)程回歸[53]推薦具有最佳性能的參數(shù)配置.數(shù)據(jù)儲(chǔ)存庫(kù)中保存了之前工作負(fù)載下的樣本及對(duì)應(yīng)的性能曲面,在新的調(diào)優(yōu)任務(wù)中可以使用加噪聲的舊性能曲面作為初始性能曲面,再通過(guò)與iTuned一樣的采樣更新迭代方式尋找最優(yōu)參數(shù)配置.這種方式可以緩解對(duì)大量初始樣本的需求,并且有效提升搜索尋優(yōu)的效率.Ishihara 等人[42]提出的參數(shù)調(diào)優(yōu)系統(tǒng)也是采用高斯過(guò)程回歸來(lái)尋找最優(yōu)的DBMS 參數(shù)配置,并應(yīng)用于工作中的數(shù)據(jù)庫(kù)管理系統(tǒng).

Fig.2 OtterTune machine learning pipeline[3]圖2 OtterTune 機(jī)器學(xué)習(xí)流程[3]

針對(duì)云數(shù)據(jù)庫(kù)緩沖池調(diào)優(yōu)問(wèn)題,Tan 等人[43]設(shè)計(jì)了iBTune.利用來(lái)自相似工作負(fù)載的信息來(lái)找出每個(gè)數(shù)據(jù)庫(kù)實(shí)例的可容忍錯(cuò)誤率,之后利用錯(cuò)誤率和分配的內(nèi)存大小之間的關(guān)系來(lái)分別優(yōu)化目標(biāo)緩沖池大小.同時(shí),iBTune 還通過(guò)一個(gè)成對(duì)的深度神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)請(qǐng)求響應(yīng)時(shí)間的上限.緩沖池大小調(diào)優(yōu)只能在預(yù)測(cè)的響應(yīng)時(shí)間上限處于安全限制的條件下執(zhí)行.

Rodd 等人[44]提出了一種基于神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化算法.通過(guò)主動(dòng)監(jiān)測(cè)數(shù)據(jù)庫(kù)的關(guān)鍵性能指標(biāo)并作為神經(jīng)網(wǎng)絡(luò)的輸入,經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)能夠?yàn)樗璧木彌_區(qū)大小估算出合適的數(shù)值.Zheng 等人[45]也提出了一種基于神經(jīng)網(wǎng)絡(luò)的性能自調(diào)優(yōu)算法.首先通過(guò)提取自動(dòng)工作負(fù)載存儲(chǔ)庫(kù)報(bào)告,識(shí)別關(guān)鍵的系統(tǒng)參數(shù)和性能指標(biāo);然后利用收集的數(shù)據(jù)構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)模型,最后采用一個(gè)自調(diào)優(yōu)算法對(duì)這些參數(shù)進(jìn)行優(yōu)化.

ACTGAN[46]則是一種基于生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial network,GAN)的系統(tǒng)參數(shù)優(yōu)化方法.該方法首先采用隨機(jī)采樣得到初始樣本,并從中挑選性能較好的參數(shù)配置作為GAN 的訓(xùn)練樣本,通過(guò)對(duì)抗學(xué)習(xí)推薦潛在的、具有更好性能的參數(shù)配置.Siegmund 等人[47]通過(guò)結(jié)合機(jī)器學(xué)習(xí)和抽樣啟發(fā)方法,為可配置系統(tǒng)生成性能影響模型.Nair 等人[48]針對(duì)建立精確性能模型所需成本高的問(wèn)題,提出了一種基于排序的性能預(yù)測(cè)模型,實(shí)驗(yàn)結(jié)果表明這種精度較差的模型可用于對(duì)配置進(jìn)行排序,并進(jìn)一步確定最優(yōu)參數(shù)配置.Ha 等人[49]提出了一種結(jié)合深度前饋神經(jīng)網(wǎng)絡(luò)和L1 正則化的系統(tǒng)性能預(yù)測(cè)方法DeepPerf,可以對(duì)具有二進(jìn)制和/或數(shù)值型參數(shù)的系統(tǒng)性能進(jìn)行預(yù)測(cè).文獻(xiàn)[46-49]所述的4 個(gè)工作雖然研究對(duì)象為軟件系統(tǒng),但均適用于數(shù)據(jù)庫(kù)管理系統(tǒng),并通過(guò)實(shí)驗(yàn)對(duì)方案有效性進(jìn)行了驗(yàn)證.其中包含了1 個(gè)參數(shù)優(yōu)化方案[46]和3 個(gè)性能預(yù)測(cè)方案[47-49].性能預(yù)測(cè)方案能夠?qū)崿F(xiàn)對(duì)不同配置的系統(tǒng)性能預(yù)測(cè),從而進(jìn)一步實(shí)現(xiàn)性能優(yōu)化等數(shù)據(jù)庫(kù)系統(tǒng)管理任務(wù).

文獻(xiàn)[1,3,41-49]所述方法的區(qū)別不僅在于使用模型的不同,在整個(gè)調(diào)優(yōu)框架中也有所不同.基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法往往采用“參數(shù)選擇—采樣—預(yù)測(cè)模型建立—最優(yōu)參數(shù)配置搜索”這種管道式框架進(jìn)行參數(shù)調(diào)優(yōu).對(duì)于參數(shù)選擇,多數(shù)方法利用專家知識(shí)進(jìn)行人工選擇[1,46,48],一部分工作通過(guò)Lasso[3,49]和ANOVA[38]等方法進(jìn)行,也存在少量針對(duì)數(shù)據(jù)庫(kù)的緩沖區(qū)大小進(jìn)行研究的工作[43-44].采樣方法的選擇多數(shù)為隨機(jī)采樣和LHS,這2 種采樣方法在實(shí)際應(yīng)用中均取得較好的結(jié)果.預(yù)測(cè)模型的不同選擇在表1 中進(jìn)行羅列,使用較多的機(jī)器學(xué)習(xí)模型包括高斯過(guò)程回歸和神經(jīng)網(wǎng)絡(luò).高斯過(guò)程回歸計(jì)算速度高,但無(wú)法精確擬合性能曲面;神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力較強(qiáng),適用于非線性函數(shù)擬合,然而訓(xùn)練難度較高.最后,最優(yōu)參數(shù)配置搜索方法的選擇與性能預(yù)測(cè)模型的類型息息相關(guān),例如對(duì)高斯過(guò)程回歸大多使用貝葉斯優(yōu)化來(lái)確定最優(yōu)參數(shù)配置[1,3],也有少部分工作無(wú)需進(jìn)行這一搜索過(guò)程,如ACTGAN[46]直接通過(guò)GAN 來(lái)推薦性能較好的參數(shù)配置.

綜上所述,基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法能夠較好地解決數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題,通過(guò)利用過(guò)往參數(shù)優(yōu)化任務(wù)的數(shù)據(jù),加快調(diào)優(yōu)任務(wù)的進(jìn)程,且具有較強(qiáng)的普適性,能應(yīng)用于不同類型的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化任務(wù)中.但是,這種方法仍存在一些局限性.首先,機(jī)器學(xué)習(xí)方法需要大規(guī)模高質(zhì)量的訓(xùn)練樣本,這在數(shù)據(jù)庫(kù)系統(tǒng)中往往是難以獲取的.其次,基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法往往采用上述管道式框架進(jìn)行參數(shù)調(diào)優(yōu),然而在每個(gè)階段獲得的最優(yōu)解并不能保障在下一階段仍是最優(yōu)解,在前面的階段中獲得的結(jié)果將直接影響最終的參數(shù)優(yōu)化結(jié)果.最后,由于數(shù)據(jù)庫(kù)系統(tǒng)具有高維連續(xù)且復(fù)雜的參數(shù)空間,通過(guò)簡(jiǎn)單的機(jī)器學(xué)習(xí)模型(如高斯過(guò)程模型)往往很難擬合出精確的性能變化曲面.即使能夠擬合出精確的性能變化曲面,尋找該復(fù)雜曲面上的最優(yōu)解仍是NP-hard 問(wèn)題.考慮到上述問(wèn)題,一些研究人員開(kāi)始嘗試引入功能更加強(qiáng)大的強(qiáng)化學(xué)習(xí)來(lái)解決數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題.

2.2.3 基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法

為了解決基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化學(xué)習(xí)方法中存在的問(wèn)題,一些研究人員開(kāi)始嘗試使用強(qiáng)化學(xué)習(xí)對(duì)數(shù)據(jù)庫(kù)參數(shù)進(jìn)行優(yōu)化,這種方式既不需要先驗(yàn)知識(shí),也無(wú)需對(duì)復(fù)雜的性能曲面進(jìn)行擬合.參數(shù)優(yōu)化可以抽象為馬爾可夫決策過(guò)程,在執(zhí)行工作負(fù)載的過(guò)程中,數(shù)據(jù)庫(kù)的狀態(tài)也不斷發(fā)生變化,在每一個(gè)時(shí)刻策略算法根據(jù)當(dāng)前數(shù)據(jù)庫(kù)狀態(tài)進(jìn)行動(dòng)作,即選擇要調(diào)整的參數(shù)及其數(shù)值;完成調(diào)整后,數(shù)據(jù)庫(kù)將更新?tīng)顟B(tài),并根據(jù)更新后的狀態(tài)進(jìn)行下一步動(dòng)作,如此反復(fù)迭代直至負(fù)載執(zhí)行結(jié)束.使用強(qiáng)化學(xué)習(xí)多次重復(fù)上述過(guò)程,就可以找到最適合該負(fù)載的數(shù)據(jù)庫(kù)參數(shù)配置.

針對(duì)云數(shù)據(jù)庫(kù)的參數(shù)優(yōu)化問(wèn)題,Zhang 等人[50]利用深度強(qiáng)化學(xué)習(xí)方法提出了一種端到端的參數(shù)優(yōu)化系統(tǒng)CDBTune.該系統(tǒng)采用試錯(cuò)策略,通過(guò)有限的樣本進(jìn)行學(xué)習(xí),降低了對(duì)大量高質(zhì)量樣本采集的需求.并且通過(guò)獎(jiǎng)勵(lì)反饋機(jī)制實(shí)現(xiàn)了端到端學(xué)習(xí),能夠在高維連續(xù)空間中尋找最優(yōu)參數(shù)配置,加快模型的收斂速度,提高了在線調(diào)優(yōu)的效率.CDBTune 使用強(qiáng)化學(xué)習(xí)的主要挑戰(zhàn)是將數(shù)據(jù)庫(kù)參數(shù)優(yōu)化場(chǎng)景映射到強(qiáng)化學(xué)習(xí)中的適當(dāng)操作.圖3 描述了強(qiáng)化學(xué)習(xí)中6 個(gè)關(guān)鍵元素的交互關(guān)系,并展示了CDBTune 中6 個(gè)元素與數(shù)據(jù)庫(kù)參數(shù)優(yōu)化之間的對(duì)應(yīng)關(guān)系.

1)智能體.智能體可以看作是調(diào)優(yōu)系統(tǒng)CDBTune,它接收來(lái)自云數(shù)據(jù)庫(kù)的獎(jiǎng)勵(lì)(即性能差異)和狀態(tài),并更新策略來(lái)指導(dǎo)如何調(diào)整參數(shù)以獲得更高的獎(jiǎng)勵(lì)(更高的性能).

2)環(huán)境.環(huán)境是調(diào)優(yōu)對(duì)象,具體來(lái)說(shuō)是一個(gè)云數(shù)據(jù)庫(kù)實(shí)例.

3)狀態(tài).狀態(tài)表示智能體當(dāng)前的狀態(tài).當(dāng)CDBTune推薦一組參數(shù)配置并由云數(shù)據(jù)庫(kù)執(zhí)行時(shí),內(nèi)部指標(biāo)可以用來(lái)表示云數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),例如在一段時(shí)間內(nèi)從磁盤讀取或?qū)懭腠?yè)面的計(jì)數(shù)器.

Fig.3 The correspondence between reinforcement learning elements and parameter tuning[50]圖3 強(qiáng)化學(xué)習(xí)元素與參數(shù)優(yōu)化的對(duì)應(yīng)關(guān)系[50]

4)獎(jiǎng)勵(lì).獎(jiǎng)勵(lì)是一個(gè)標(biāo)量,表示當(dāng)前時(shí)刻的性能與前一時(shí)刻或初始設(shè)置時(shí)的性能差異,即在云數(shù)據(jù)庫(kù)執(zhí)行當(dāng)前時(shí)刻CDBTune 推薦的新參數(shù)配置后產(chǎn)生的性能變化.

5)動(dòng)作.動(dòng)作來(lái)自參數(shù)配置空間,相當(dāng)于參數(shù)調(diào)節(jié)操作.云數(shù)據(jù)庫(kù)在相應(yīng)的狀態(tài)下根據(jù)最新的政策執(zhí)行對(duì)應(yīng)的動(dòng)作.1 次動(dòng)作代表1 次增加或減少所有可調(diào)參數(shù)值.

6)策略.策略定義了CDBTune 在特定時(shí)間和環(huán)境中的行為,它是從狀態(tài)到動(dòng)作的映射.給定一個(gè)云數(shù)據(jù)庫(kù)狀態(tài),如果一個(gè)動(dòng)作(即參數(shù)調(diào)優(yōu))被調(diào)用,策略通過(guò)在原始狀態(tài)上應(yīng)用該動(dòng)作來(lái)維持下一個(gè)狀態(tài).這里的策略指的是深度神經(jīng)網(wǎng)絡(luò),它保存輸入(數(shù)據(jù)庫(kù)狀態(tài))、輸出(參數(shù))和不同狀態(tài)之間的轉(zhuǎn)換.強(qiáng)化學(xué)習(xí)的目標(biāo)是學(xué)習(xí)最佳策略.

強(qiáng)化學(xué)習(xí)工作過(guò)程中,云數(shù)據(jù)庫(kù)是目標(biāo)調(diào)優(yōu)系統(tǒng),可以被視為強(qiáng)化學(xué)習(xí)的環(huán)境.CDBTune 中的深度強(qiáng)化學(xué)習(xí)模型則是強(qiáng)化學(xué)習(xí)中的智能體,主要由深度神經(jīng)網(wǎng)絡(luò)(策略)組成,其輸入是數(shù)據(jù)庫(kù)狀態(tài),輸出是狀態(tài)對(duì)應(yīng)的推薦參數(shù)配置.

當(dāng)CDBTune 系統(tǒng)收到用戶的在線調(diào)優(yōu)請(qǐng)求后,首先會(huì)從用戶處收集查詢工作負(fù)載,獲取當(dāng)前參數(shù)配置并執(zhí)行獲取對(duì)應(yīng)性能;然后使用離線訓(xùn)練的模型進(jìn)行在線參數(shù)優(yōu)化;最后給出參數(shù)配置.若優(yōu)化過(guò)程終止,系統(tǒng)還會(huì)更新強(qiáng)化學(xué)習(xí)模型和內(nèi)存池.

此外,Li 等人[51]提出了一種基于深度強(qiáng)化學(xué)習(xí)的查詢感知數(shù)據(jù)庫(kù)參數(shù)調(diào)優(yōu)系統(tǒng)QTune.QTune 考慮了SQL 查詢的豐富特性(包括查詢類型和查詢成本等),并將查詢特性提供給深度強(qiáng)化學(xué)習(xí)模型,從而動(dòng)態(tài)選擇合適的參數(shù)配置.與傳統(tǒng)的深度強(qiáng)化學(xué)習(xí)方法不同[54-55],QTune 采用了一種使用Actor-Critic 網(wǎng)絡(luò)的雙態(tài)深度確定性策略梯度(double-state deep deterministic policy gradient,DS-DDPG)模 型.DSDDPG 模型可以根據(jù)數(shù)據(jù)庫(kù)狀態(tài)和查詢信息自動(dòng)學(xué)習(xí)Actor-Critic 策略來(lái)解決調(diào)優(yōu)問(wèn)題.此外,QTune 提供了3 種數(shù)據(jù)庫(kù)調(diào)優(yōu)粒度:1)查詢級(jí)調(diào)優(yōu);2)工作負(fù)載級(jí)調(diào)優(yōu);3)集群級(jí)調(diào)優(yōu).查詢級(jí)調(diào)優(yōu)為每個(gè)SQL查詢搜索良好的參數(shù)配置,這種方法可以實(shí)現(xiàn)低時(shí)延,但由于不能并行運(yùn)行SQL 查詢,吞吐量較低.工作負(fù)載級(jí)調(diào)優(yōu)能夠?yàn)椴樵児ぷ髫?fù)載推薦良好的參數(shù)配置,這種方法可以實(shí)現(xiàn)高吞吐量,但不能為每個(gè)SQL查詢找到良好的參數(shù)配置,因此時(shí)延較高.集群級(jí)調(diào)優(yōu)則將查詢進(jìn)行聚類分組,并為每個(gè)組中的查詢找到良好的數(shù)據(jù)庫(kù)參數(shù)配置.為了實(shí)現(xiàn)查詢聚類,QTune采用了一種基于深度學(xué)習(xí)的查詢聚類方法,能夠根據(jù)查詢所適用參數(shù)配置的相似性對(duì)查詢進(jìn)行分類.這種方法可以實(shí)現(xiàn)高吞吐量和低時(shí)延,因?yàn)樗梢詾橐唤M查詢找到良好的參數(shù)配置,并在每個(gè)組中并行運(yùn)行查詢.因此,QTune 可以根據(jù)給定的需求在時(shí)延和吞吐量之間進(jìn)行權(quán)衡,并同時(shí)提供粗粒度和細(xì)粒度調(diào)優(yōu).

在深度強(qiáng)化學(xué)習(xí)技術(shù)的支持下,CDBTune 和QTune 這類基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法能夠高效地完成數(shù)據(jù)庫(kù)參數(shù)優(yōu)化任務(wù),同時(shí)不需要大量的有標(biāo)簽數(shù)據(jù).其中CDBTune 可用于云數(shù)據(jù)庫(kù),支持粗粒度的參數(shù)優(yōu)化(例如工作負(fù)載級(jí)別的參數(shù)優(yōu)化),但不能提供細(xì)粒度的參數(shù)優(yōu)化(例如查詢級(jí)別的參數(shù)優(yōu)化).Qtune 能夠提供不同粒度的調(diào)優(yōu),但目前仍基于單機(jī)數(shù)據(jù)庫(kù),沒(méi)有解決在分布式集群上為多個(gè)數(shù)據(jù)庫(kù)實(shí)例進(jìn)行參數(shù)優(yōu)化的問(wèn)題[6].

3 變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法

針對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題,研究人員進(jìn)行了一系列工作來(lái)試圖理解配置參數(shù)與系統(tǒng)性能之間的關(guān)系,并進(jìn)一步推薦好的參數(shù)配置.然而,現(xiàn)有的方法通常關(guān)注于固定的環(huán)境,得到的最優(yōu)參數(shù)配置也是針對(duì)某一特定環(huán)境的.如果這些環(huán)境因素中的任何一個(gè)發(fā)生改變時(shí),就必須重新進(jìn)行參數(shù)優(yōu)化.這就意味著在當(dāng)環(huán)境發(fā)生變化時(shí),在之前環(huán)境中進(jìn)行參數(shù)調(diào)優(yōu)中花費(fèi)的精力不能重用,必須從頭進(jìn)行新的參數(shù)優(yōu)化任務(wù),這將造成巨大的資源和時(shí)間浪費(fèi).例如,基于傳統(tǒng)機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法中往往需要建立一個(gè)性能預(yù)測(cè)模型,并利用該模型尋優(yōu).在實(shí)際系統(tǒng)中,由于環(huán)境的改變,之前的性能預(yù)測(cè)模型往往不再有效,因此需要建立新的性能預(yù)測(cè)模型以滿足數(shù)據(jù)庫(kù)系統(tǒng)管理的需求.然而,機(jī)器學(xué)習(xí)方法對(duì)樣本的高要求和用戶對(duì)快速獲得新系統(tǒng)性能預(yù)測(cè)模型的需求產(chǎn)生了矛盾.構(gòu)建良好的系統(tǒng)性能預(yù)測(cè)模型往往需要大量的樣本,但是收集樣本需要大量的時(shí)間成本,這使得新環(huán)境下的系統(tǒng)性能預(yù)測(cè)模型建立費(fèi)時(shí)又費(fèi)力.

為了避免上述問(wèn)題,研究人員將遷移學(xué)習(xí)的概念引入到數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)優(yōu)化中.利用其他環(huán)境中的知識(shí)(例如性能度量樣本或性能預(yù)測(cè)模型)來(lái)輔助進(jìn)行性能建模和優(yōu)化任務(wù),已成為近年來(lái)的研究熱點(diǎn).目前關(guān)于這一問(wèn)題的研究工作相對(duì)較少,其中一些研究工作集中于應(yīng)對(duì)3 類環(huán)境變化中的某一種,也有一部分研究工作可應(yīng)用于多種不同的環(huán)境變化場(chǎng)景中,如表2 所示.本文對(duì)這些研究工作進(jìn)行分類介紹.

Table 2 Parameter Tuning and Performance Prediction Approaches for Database Systems Under Environmental Changes表2 變化環(huán)境下的數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化與性能預(yù)測(cè)方法

3.1 針對(duì)工作負(fù)載變化的參數(shù)優(yōu)化方法

工作負(fù)載的變化將對(duì)配置參數(shù)與系統(tǒng)性能的關(guān)系產(chǎn)生影響,進(jìn)而對(duì)參數(shù)優(yōu)化的結(jié)果產(chǎn)生影響[38,41,57].一方面,配置參數(shù)的選擇可以對(duì)系統(tǒng)性能產(chǎn)生較大的影響;另一方面,在不同的工作負(fù)載條件下,配置參數(shù)對(duì)系統(tǒng)性能產(chǎn)生的影響會(huì)發(fā)生較大的改變.當(dāng)工作負(fù)載變化后,如果繼續(xù)采用在之前工作負(fù)載下選定的最優(yōu)參數(shù)配置,可能會(huì)造成較大的性能下降.因此,自動(dòng)參數(shù)優(yōu)化方法需要根據(jù)工作負(fù)載的變化調(diào)整數(shù)據(jù)庫(kù)的參數(shù)配置推薦,從而達(dá)到最優(yōu)的性能表現(xiàn).

為了重用過(guò)去參數(shù)優(yōu)化的經(jīng)驗(yàn),OtterTune[3,41]篩選部分運(yùn)行時(shí)統(tǒng)計(jì)信息來(lái)描述工作負(fù)載,并根據(jù)工作負(fù)載特征向量之間的歐氏距離,將目標(biāo)工作負(fù)載映射到一個(gè)之前進(jìn)行過(guò)參數(shù)調(diào)優(yōu)且相似性較高的工作負(fù)載.然后,OtterTune 重用類似工作負(fù)載中的數(shù)據(jù)來(lái)訓(xùn)練高斯過(guò)程模型,并通過(guò)添加來(lái)自目標(biāo)工作負(fù)載的性能度量樣本來(lái)更新模型.在這個(gè)過(guò)程中,OtterTune 可以降低為新工作負(fù)載進(jìn)行參數(shù)優(yōu)化所需要的時(shí)間和資源.

針對(duì)OtterTune 等自動(dòng)參數(shù)調(diào)優(yōu)方法中采用的靜態(tài)負(fù)載描述不夠準(zhǔn)確的問(wèn)題,沈忱等人[56]提出了一種動(dòng)態(tài)負(fù)載的時(shí)序描述方式和動(dòng)態(tài)負(fù)載匹配算法.首先通過(guò)動(dòng)態(tài)負(fù)載描述方法來(lái)更準(zhǔn)確地刻畫負(fù)載變化;然后,對(duì)于負(fù)載匹配中序列不規(guī)則、歐氏距離算法不再適用等問(wèn)題,基于動(dòng)態(tài)時(shí)間規(guī)整算法提出了一種使用數(shù)據(jù)對(duì)齊思想的動(dòng)態(tài)負(fù)載匹配算法;最后,將所提出的方法應(yīng)用于OtterTune 中,形成了基于動(dòng)態(tài)負(fù)載的調(diào)優(yōu)工具D-OtterTune.

Rafiki[38]是一個(gè)能夠在動(dòng)態(tài)工作負(fù)載下實(shí)現(xiàn)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化的中間件.Rafiki 將待優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)視為黑盒,通過(guò)與OtterTune 類似的工作流程進(jìn)行參數(shù)推薦.首先,通過(guò)ANOVA 從所有參數(shù)集合中識(shí)別關(guān)鍵參數(shù),以便減少計(jì)算復(fù)雜度和模型訓(xùn)練的數(shù)據(jù)收集開(kāi)銷;其次,訓(xùn)練神經(jīng)網(wǎng)絡(luò)作為代理模型來(lái)預(yù)測(cè)數(shù)據(jù)庫(kù)吞吐量;最后,基于代理模型通過(guò)遺傳算法進(jìn)行參數(shù)優(yōu)化,從而最大化系統(tǒng)性能.文獻(xiàn)[3,41,56]所述的方法能夠適用于各種類型的數(shù)據(jù)庫(kù),但考慮到非關(guān)系型數(shù)據(jù)庫(kù)能夠更好地滿足高性能計(jì)算應(yīng)用中海量半結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和分析需求,該研究選取非關(guān)系型數(shù)據(jù)庫(kù)作為研究對(duì)象進(jìn)行了深入探究.為了應(yīng)對(duì)動(dòng)態(tài)工作負(fù)載變化,Rafiki 在代理模型中直接包含了工作負(fù)載特征和最具影響力的參數(shù),這種方式可以通過(guò)參數(shù)配置的較大變化來(lái)快速地應(yīng)對(duì)工作負(fù)載的較大變化.當(dāng)工作負(fù)載發(fā)生變化時(shí),應(yīng)用Rafiki 提供參數(shù)推薦進(jìn)行重新配置需要同時(shí)關(guān)閉所有服務(wù)器實(shí)例,更改它們的參數(shù)配置,并重新啟動(dòng)所有服務(wù)器實(shí)例.

雖然Rafiki 可以為靜態(tài)工作負(fù)載自動(dòng)識(shí)別接近最優(yōu)的配置,但忽略了3 個(gè)問(wèn)題:1)在重新配置過(guò)程中,數(shù)據(jù)庫(kù)重新啟動(dòng)會(huì)造成性能下降;2)需要預(yù)測(cè)新的工作負(fù)載模式持續(xù)的時(shí)間;3)在重新配置期間是否能夠滿足應(yīng)用程序的可用性需求.SOPHIA[57]通過(guò)結(jié)合工作負(fù)載預(yù)測(cè)和成本效益分析器的優(yōu)化技術(shù)來(lái)解決上述3 個(gè)問(wèn)題.SOPHIA 計(jì)算每個(gè)重新配置步驟的相對(duì)成本和收益,并為未來(lái)的時(shí)間窗確定一個(gè)最佳的參數(shù)配置.該方法能夠指定何時(shí)更改參數(shù)配置,以及更改的參數(shù)和其相應(yīng)數(shù)值,從而在不降低數(shù)據(jù)可用性的情況下獲得最佳性能.

SOPHIA 針對(duì)集群非關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)庫(kù)配置參數(shù)優(yōu)化,能夠處理動(dòng)態(tài)工作負(fù)載.然而SOPHIA的設(shè)計(jì)只關(guān)注參數(shù)優(yōu)化調(diào)優(yōu),沒(méi)有考慮云虛擬機(jī)(virtual machine,VM)配置,以及VM 和數(shù)據(jù)庫(kù)配置之間的依賴關(guān)系.OPTIMUSCLOUD[58]考慮了數(shù)據(jù)庫(kù)級(jí)和VM 配置之間的依賴關(guān)系,針對(duì)動(dòng)態(tài)工作負(fù)載對(duì)數(shù)據(jù)庫(kù)和云配置參數(shù)進(jìn)行聯(lián)合調(diào)優(yōu).OPTIMUSCLOUD將性能模型與工作負(fù)載預(yù)測(cè)器和成本效益分析器結(jié)合起來(lái),當(dāng)工作負(fù)載發(fā)生較大變化時(shí)將采用新配置,并決定應(yīng)該重新配置哪些服務(wù)器.首先,OPTIMUSCLOUD 使用待調(diào)優(yōu)數(shù)據(jù)庫(kù)的歷史數(shù)據(jù)來(lái)訓(xùn)練工作負(fù)載預(yù)測(cè)模型.其次,訓(xùn)練第1 個(gè)基于隨機(jī)森林(RF)的性能預(yù)測(cè)模型,能夠預(yù)測(cè)任意給定配置參數(shù)集(包括數(shù)據(jù)庫(kù)和VM)下單個(gè)服務(wù)器的性能.之后,訓(xùn)練第2 個(gè)RF 模型作為集群級(jí)別的性能預(yù)測(cè)模型來(lái)預(yù)測(cè)異構(gòu)服務(wù)器集群的吞吐量.最后,在線階段中,OPTIMUSCLOUD 優(yōu)化器利用上述預(yù)測(cè)模型來(lái)評(píng)估不同VM/應(yīng)用程序配置的適用性,搜索最佳配置,在給定的預(yù)算內(nèi)提供最佳性能.

Kossmann 等人[59]提出了一種自管理數(shù)據(jù)庫(kù)系統(tǒng),通過(guò)同時(shí)考慮工作負(fù)載預(yù)測(cè)和運(yùn)行時(shí)性能監(jiān)視來(lái)及時(shí)確定調(diào)優(yōu)點(diǎn).一旦調(diào)整了配置參數(shù),之前的配置參數(shù)實(shí)例就被存儲(chǔ)起來(lái),以便為過(guò)去的決策建立反饋循環(huán),幫助從過(guò)去的自管理決策中學(xué)習(xí).Kossmann 等人[60]還提出了一種基于組件的自治數(shù)據(jù)庫(kù)系統(tǒng)框架,自治數(shù)據(jù)庫(kù)系統(tǒng)需要自動(dòng)調(diào)整其物理設(shè)計(jì)和配置,因此面臨多方面的挑戰(zhàn):系統(tǒng)必須預(yù)測(cè)未來(lái)的工作負(fù)載,有效地找到健壯的配置,并不斷從決策中學(xué)習(xí)知識(shí)并應(yīng)用于之后的決策中.該框架通過(guò)關(guān)注點(diǎn)分離,以低開(kāi)銷實(shí)現(xiàn)數(shù)據(jù)庫(kù)集成和自管理功能的開(kāi)發(fā),并通過(guò)一種基于線性規(guī)劃的算法為多個(gè)相互依賴參數(shù)的優(yōu)化提供有效的調(diào)優(yōu)命令.

3.2 針對(duì)軟件版本變化的性能預(yù)測(cè)方法

Mühlbauer 等人[61]將軟件配置和版本變化2 個(gè)視角結(jié)合在一起,提出一種可以識(shí)別跨軟件變體和系統(tǒng)版本的性能變化的方法.通過(guò)迭代地對(duì)配置和版本進(jìn)行采樣并測(cè)量各自的性能,不斷更新性能變化可能性模型,從而實(shí)現(xiàn)對(duì)可配置軟件系統(tǒng)的性能變化進(jìn)行回顧性檢測(cè),并將其定位到特定的選項(xiàng)或交互.

3.3 針對(duì)硬件配置變化的性能預(yù)測(cè)方法

Valov 等人[62]研究了如何利用遷移學(xué)習(xí)來(lái)增強(qiáng)系統(tǒng)性能預(yù)測(cè)模型的通用性.性能預(yù)測(cè)模型在不同硬件平臺(tái)間的遷移主要分為3 個(gè)步驟:1)性能預(yù)測(cè)模型的訓(xùn)練,采用分類與回歸樹(shù)構(gòu)建性能預(yù)測(cè)模型;2)線性遷移模型的訓(xùn)練,通過(guò)簡(jiǎn)單的線性回歸模型將知識(shí)從相關(guān)環(huán)境轉(zhuǎn)移到目標(biāo)環(huán)境;3)預(yù)測(cè)結(jié)果的遷移.

3.4 針對(duì)多種環(huán)境變化的參數(shù)優(yōu)化方法

與文獻(xiàn)[62]所述的直接遷移模型的方法不同,目前還有另一種重用源環(huán)境數(shù)據(jù)的方法DataReuseTL[63],該方法通過(guò)高斯過(guò)程模型等學(xué)習(xí)器來(lái)捕獲不同環(huán)境之間的相關(guān)性.DataReuseTL 只需要從目標(biāo)環(huán)境中采樣少量樣本,并通過(guò)其他相關(guān)環(huán)境的樣本學(xué)習(xí)到準(zhǔn)確的性能模型,并進(jìn)一步調(diào)優(yōu).該方法涵蓋了不同類型的環(huán)境變化場(chǎng)景,包括工作負(fù)載、硬件環(huán)境和數(shù)據(jù)集的變化.

ResTune[64]將面向資源的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題定義為一個(gè)約束貝葉斯優(yōu)化問(wèn)題.為了加速優(yōu)化過(guò)程,ResTune 采用一種元學(xué)習(xí)策略來(lái)提取歷史任務(wù)的調(diào)優(yōu)經(jīng)驗(yàn),通過(guò)多個(gè)模型(基學(xué)習(xí)器)來(lái)表示先驗(yàn)知識(shí),并通過(guò)一個(gè)集成模型(元學(xué)習(xí)器)來(lái)有效聯(lián)合利用過(guò)往的調(diào)優(yōu)經(jīng)驗(yàn).元學(xué)習(xí)器通過(guò)元特征和模型預(yù)測(cè)來(lái)衡量各個(gè)基學(xué)習(xí)器對(duì)目標(biāo)工作負(fù)載的有用性.通過(guò)這種方式,ResTune 可以相應(yīng)地利用現(xiàn)有數(shù)據(jù)并加速參數(shù)優(yōu)化過(guò)程.該方法可以在不同的工作負(fù)載和異構(gòu)的硬件環(huán)境中遷移知識(shí).

近年來(lái)的研究表明,遷移學(xué)習(xí)可以通過(guò)跨環(huán)境遷移關(guān)于性能表現(xiàn)的知識(shí),來(lái)降低在目標(biāo)環(huán)境中構(gòu)建性能預(yù)測(cè)模型的成本.然而,值得探討的是遷移學(xué)習(xí)為何有效,以及何時(shí)對(duì)性能建模任務(wù)有效.Jamshidi等人[65]使用了多種統(tǒng)計(jì)和機(jī)器學(xué)習(xí)技術(shù)對(duì)這一問(wèn)題進(jìn)行研究,并得出關(guān)鍵結(jié)論:在不同的環(huán)境中存在不同形式的可遷移知識(shí),這有助于性能預(yù)測(cè)模型的學(xué)習(xí).在較小的環(huán)境變化中,遷移學(xué)習(xí)可以采用簡(jiǎn)單的線性形式;而對(duì)于較大的環(huán)境變化,可遷移的知識(shí)可以用于更有效的采樣.

在文獻(xiàn)[65]所述的探索性分析的基礎(chǔ)上,Javidian等人[66]利用因果分析來(lái)識(shí)別遷移學(xué)習(xí)可用的關(guān)鍵知識(shí)內(nèi)容.因果分析證實(shí)配置參數(shù)的因果影響可以在不同環(huán)境中以高可信度進(jìn)行遷移.文獻(xiàn)[65-66]的2個(gè)研究工作都可以為性能預(yù)測(cè)的知識(shí)遷移提供新的見(jiàn)解,這些見(jiàn)解有助于在跨環(huán)境條件(工作負(fù)載、硬件和軟件版本改變)下快速且低成本地學(xué)習(xí)到更準(zhǔn)確的性能模型.

此外,遷移學(xué)習(xí)僅在源環(huán)境與目標(biāo)環(huán)境相似的情況下才有效.因此,BEETLE[67]研究了從何處進(jìn)行學(xué)習(xí)的問(wèn)題.首先,通過(guò)競(jìng)賽算法對(duì)候選環(huán)境進(jìn)行順序評(píng)估,確定哪一個(gè)可用環(huán)境最適合作為源環(huán)境,即Bellwether 環(huán)境.一旦確定了Bellwether 環(huán)境,就可以通過(guò)重用源環(huán)境的性能度量樣本來(lái)構(gòu)建目標(biāo)環(huán)境預(yù)測(cè)模型,并基于該模型尋找目標(biāo)環(huán)境中的最優(yōu)參數(shù)配置.該研究考慮了3 種環(huán)境變化場(chǎng)景:工作負(fù)載、硬件環(huán)境和軟件版本變化.

目前環(huán)境變化下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法中,針對(duì)工作負(fù)載變化的參數(shù)優(yōu)化方法研究較多,主要研究了如何在工作負(fù)載變化場(chǎng)景下動(dòng)態(tài)進(jìn)行最優(yōu)參數(shù)推薦[3,38],以及討論何時(shí)進(jìn)行上述操作的研究[58-59].然而,針對(duì)軟件版本變化、硬件配置變化以及多種環(huán)境變化場(chǎng)景的參數(shù)優(yōu)化還有待進(jìn)一步研究,現(xiàn)存的研究著重關(guān)注這些環(huán)境變化下軟件系統(tǒng)性能模型之間存在的關(guān)聯(lián)性和可遷移知識(shí),并試圖通過(guò)遷移學(xué)習(xí)利用不同環(huán)境間存在的可遷移知識(shí)來(lái)加速新環(huán)境下性能預(yù)測(cè)模型的建立,為下一步的參數(shù)優(yōu)化工作奠定基礎(chǔ).針對(duì)環(huán)境變化的性能預(yù)測(cè)研究均適用于數(shù)據(jù)庫(kù)管理系統(tǒng),并通過(guò)實(shí)驗(yàn)進(jìn)行了驗(yàn)證.

4 研究現(xiàn)狀總結(jié)

數(shù)據(jù)庫(kù)管理系統(tǒng)有大量配置參數(shù),這些參數(shù)控制了系統(tǒng)的內(nèi)存分配、I/O 優(yōu)化、備份與恢復(fù)等諸多方面,對(duì)數(shù)據(jù)庫(kù)的性能具有極大影響.因此這些參數(shù)需要進(jìn)行優(yōu)化以提升系統(tǒng)性能.但是由于數(shù)據(jù)庫(kù)配置參數(shù)數(shù)量眾多,而且不標(biāo)準(zhǔn)(即不同數(shù)據(jù)庫(kù)系統(tǒng)對(duì)同一個(gè)參數(shù)設(shè)置使用不同的名稱)、不獨(dú)立(即更改1 項(xiàng)參數(shù)會(huì)影響其他參數(shù)的效果)、且不通用(即最佳配置取決于目標(biāo)環(huán)境),所以對(duì)參數(shù)進(jìn)行優(yōu)化十分困難.隨著數(shù)據(jù)庫(kù)和應(yīng)用程序的規(guī)模和復(fù)雜性的不斷增長(zhǎng),手動(dòng)配置系統(tǒng)參數(shù)來(lái)滿足應(yīng)用程序的需求己經(jīng)超過(guò)了DBA 的能力.此外,調(diào)優(yōu)得到的最優(yōu)參數(shù)配置是特定于工作環(huán)境的,如果環(huán)境發(fā)生了改變,就必須重新進(jìn)行參數(shù)調(diào)優(yōu)過(guò)程.目前工業(yè)界和學(xué)術(shù)界針對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題進(jìn)行了大量相關(guān)研究,這些研究工作通過(guò)不同的方法解決這些問(wèn)題,一些工作試圖在不同參數(shù)配置下準(zhǔn)確預(yù)測(cè)系統(tǒng)的性能,還有一些工作嘗試在不同場(chǎng)景下找到接近最優(yōu)的參數(shù)配置.

本文對(duì)這些研究工作進(jìn)行了對(duì)比總結(jié),根據(jù)不同的應(yīng)用場(chǎng)景分為固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法和變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法.目前大量的研究工作主要集中于固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法,對(duì)變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法的研究工作相對(duì)較少,并且不夠深入.其中,固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法分為傳統(tǒng)的參數(shù)優(yōu)化方法和基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法2 類,并針對(duì)不同類別進(jìn)行介紹;變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法則根據(jù)不同的環(huán)境變化場(chǎng)景進(jìn)行分類介紹.

本文通過(guò)對(duì)比分析,對(duì)每種方法的優(yōu)勢(shì)和不足進(jìn)行了總結(jié).在6 種固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法中:1)手工參數(shù)優(yōu)化方法能夠在一定程度上解決參數(shù)優(yōu)化問(wèn)題,但會(huì)產(chǎn)生大量的人力、資源成本開(kāi)銷;2)基于規(guī)則的參數(shù)優(yōu)化方法可以進(jìn)行輔助決策,易于實(shí)現(xiàn)部分參數(shù)優(yōu)化,然而該方法不具有通用性,且僅能優(yōu)化少量特定的參數(shù);3)基于模型的參數(shù)優(yōu)化方法在部分場(chǎng)景下具有良好的準(zhǔn)確性,但需要深入了解系統(tǒng)內(nèi)部結(jié)構(gòu),構(gòu)建好的模型也不具有復(fù)用性;4)基于搜索的參數(shù)優(yōu)化方法無(wú)需深入系統(tǒng)內(nèi)部,是一種適應(yīng)性較強(qiáng)的方法,但是由于無(wú)法利用過(guò)往的調(diào)優(yōu)經(jīng)驗(yàn),優(yōu)化效果通常不佳;5)基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法也無(wú)需深入了解系統(tǒng)內(nèi)部,通過(guò)對(duì)系統(tǒng)性能的實(shí)際觀察進(jìn)行學(xué)習(xí),但它的缺點(diǎn)是機(jī)器學(xué)習(xí)方法需要大規(guī)模高質(zhì)量的訓(xùn)練集,此外,該方法采用管道式優(yōu)化框架,每一步的效果都會(huì)對(duì)后續(xù)優(yōu)化過(guò)程產(chǎn)生影響;6)基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化優(yōu)化需要適應(yīng)環(huán)境的動(dòng)態(tài)變化性.本文對(duì)各種方法在3 種不同維度的能力進(jìn)行了評(píng)估,包括處理復(fù)雜參數(shù)空間的能力、對(duì)樣本的需求和不同工作環(huán)境下的動(dòng)態(tài)變化性,如表3 所示.例如,基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法處理復(fù)雜參數(shù)空間的能力中等,對(duì)樣本的需求量較大,在不同工作環(huán)境下的動(dòng)態(tài)變化性較差;而變化環(huán)境下的參數(shù)優(yōu)化方法處理復(fù)雜參數(shù)空間的能力較強(qiáng),對(duì)樣本的需求中等,在不同工作環(huán)境下具有較高的動(dòng)態(tài)變化性.方法則對(duì)樣本的需求量較小,可實(shí)現(xiàn)端到端的參數(shù)優(yōu)化,但是訓(xùn)練時(shí)間較長(zhǎng);7)變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法能夠適應(yīng)動(dòng)態(tài)運(yùn)行環(huán)境,并且利用其他環(huán)境下參數(shù)優(yōu)化的經(jīng)驗(yàn),然而這類方法目前的研究不足,且只適用于長(zhǎng)時(shí)間運(yùn)行的查詢/應(yīng)用程序.

針對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化的三大挑戰(zhàn)包括:1)參數(shù)數(shù)量、種類較多且存在依賴關(guān)系導(dǎo)致的參數(shù)空間復(fù)雜性;2)收集樣本數(shù)據(jù)成本高昂且耗時(shí)導(dǎo)致的樣本不足;3)最優(yōu)參數(shù)配置在不同環(huán)境下并不通用,參數(shù)

Table 3 Comparative Evaluation of the Various Approaches for Parameter Tuning表3 各種參數(shù)優(yōu)化方法的對(duì)比評(píng)估

除了將各類參數(shù)優(yōu)化方法在應(yīng)對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化三大挑戰(zhàn)時(shí)的能力進(jìn)行對(duì)比之外,本文根據(jù)每種方法的優(yōu)缺點(diǎn)及目前研究工作中展示的實(shí)驗(yàn)結(jié)果[3,50-51,64],對(duì)各種參數(shù)優(yōu)化方法的精確性和通用性進(jìn)行了對(duì)比分析,結(jié)果如表3 所示.

1)手工參數(shù)優(yōu)化方法雖然能夠獲得不錯(cuò)的優(yōu)化效果,但對(duì)專家知識(shí)的要求非常高,不僅會(huì)耗費(fèi)大量的人力、資源成本,也需要提供大量時(shí)間給DBA 來(lái)進(jìn)行不斷試錯(cuò)以達(dá)到預(yù)期的系統(tǒng)性能優(yōu)化效果.因此,實(shí)現(xiàn)自動(dòng)參數(shù)優(yōu)化是未來(lái)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化發(fā)展的必然趨勢(shì).

2)基于規(guī)則的參數(shù)優(yōu)化方法精確性和通用性都較差,可以用于幫助用戶根據(jù)專家經(jīng)驗(yàn)、在線教程或參數(shù)優(yōu)化說(shuō)明進(jìn)行參數(shù)優(yōu)化輔助決策.

3)基于模型的參數(shù)優(yōu)化方法也對(duì)專家知識(shí)有較高的需求,對(duì)性能樣本的需求較低.這類方法在特定場(chǎng)景下具有良好的精確性,是目前在實(shí)際工程中大量應(yīng)用的方法,但通用性較差,對(duì)于不同的數(shù)據(jù)庫(kù)類型或應(yīng)用場(chǎng)景都需要重新構(gòu)建模型.

4)基于搜索的參數(shù)優(yōu)化方法無(wú)需對(duì)數(shù)據(jù)庫(kù)系統(tǒng)深入理解,通用性較強(qiáng).然而,由于需要多次實(shí)際運(yùn)行,該方法比較耗時(shí),且難以利用優(yōu)化過(guò)程中已有的知識(shí)和規(guī)律,優(yōu)化效果有待提升.

5)基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法也視數(shù)據(jù)庫(kù)系統(tǒng)為黑盒,具有較強(qiáng)的通用性,且具有從歷史任務(wù)中學(xué)習(xí)的能力.然而,這種方法對(duì)訓(xùn)練樣本的質(zhì)量和數(shù)量都有較高的要求,優(yōu)化效果會(huì)因訓(xùn)練樣本的差異和方法的管道式框架而不穩(wěn)定.基于搜索的方法和基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法更適合對(duì)系統(tǒng)內(nèi)部沒(méi)有深入了解的用戶使用,為了獲得更好的調(diào)優(yōu)效果,應(yīng)允許多次實(shí)際運(yùn)行系統(tǒng)以搜索最優(yōu)解或收集訓(xùn)練樣本.

6)基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法引入了功能更為強(qiáng)大的深度強(qiáng)化學(xué)習(xí),降低了對(duì)樣本的需求,獲得更優(yōu)的優(yōu)化效果,且對(duì)環(huán)境的變化具有一定的適應(yīng)能力.然而,該方法訓(xùn)練時(shí)間較長(zhǎng),且需要獲取內(nèi)部指標(biāo)來(lái)表示數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),因此通用性較上面2 種黑盒優(yōu)化方法稍弱.

7)變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法能夠遷移其他環(huán)境中的性能優(yōu)化知識(shí)來(lái)幫助進(jìn)行性能建模和優(yōu)化任務(wù),在降低樣本需求的同時(shí)提升了精確性.但是使用該方法的前提是已有其他環(huán)境中參數(shù)優(yōu)化經(jīng)驗(yàn)的記錄,例如性能度量樣本或性能預(yù)測(cè)模型,否則算法將面臨冷啟動(dòng)問(wèn)題.

不同參數(shù)優(yōu)化算法的適用場(chǎng)合應(yīng)該綜合考慮表3中5 個(gè)維度的表現(xiàn)進(jìn)行選擇,重點(diǎn)是動(dòng)態(tài)變化性和通用性2 個(gè)方面.其中,動(dòng)態(tài)變化性用于衡量一個(gè)參數(shù)優(yōu)化算法在某一特定的數(shù)據(jù)庫(kù)系統(tǒng)中是否具有適應(yīng)環(huán)境的改變的能力;而通用性則表示該參數(shù)優(yōu)化算法在不同的數(shù)據(jù)庫(kù)系統(tǒng)中是否具有普適性.

5 未來(lái)研究方向與挑戰(zhàn)

針對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題,目前的研究成果還存在諸多不足,不能有效指導(dǎo)參數(shù)優(yōu)化過(guò)程.歸納起來(lái),主要的研究方向與挑戰(zhàn)有3 個(gè)方面:

1)基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化

在機(jī)器學(xué)習(xí)蓬勃發(fā)展的背景下,將機(jī)器學(xué)習(xí)應(yīng)用于數(shù)據(jù)庫(kù)系統(tǒng)中來(lái)改進(jìn)系統(tǒng)性能是目前的研究熱點(diǎn)之一.通過(guò)對(duì)現(xiàn)有研究工作進(jìn)行分析,可以看出基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)系統(tǒng)參數(shù)優(yōu)化方法的研究力度最大,是目前的主流研究方向.然而機(jī)器學(xué)習(xí)方法對(duì)樣本數(shù)量和質(zhì)量有較高的要求,這在實(shí)際應(yīng)用場(chǎng)景中是難以提供的.

針對(duì)樣本數(shù)量有限這一問(wèn)題,基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化工作可以從2 個(gè)角度進(jìn)行解決.首先是研究如何對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的高維參數(shù)空間進(jìn)行自動(dòng)降維,包括高效的參數(shù)選擇和采樣方法,以較低成本構(gòu)建少量的、能夠有效刻畫系統(tǒng)性能分布的高質(zhì)量樣本,為基于機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法提供有效的支撐與保障.同時(shí),如何在少量樣本情況下對(duì)系統(tǒng)進(jìn)行性能建模與參數(shù)優(yōu)化還需要進(jìn)行系統(tǒng)性研究.一方面,通過(guò)學(xué)習(xí)能力強(qiáng)的模型對(duì)少量樣本提供的先驗(yàn)知識(shí)進(jìn)行學(xué)習(xí)和利用,進(jìn)一步提升優(yōu)化效率;另一方面,考慮引入遷移學(xué)習(xí)的概念,利用其他環(huán)境性能建模或參數(shù)優(yōu)化取得的經(jīng)驗(yàn),來(lái)幫助在新環(huán)境中通過(guò)少量樣本進(jìn)行建?;騼?yōu)化工作.這種方法不僅能幫助解決樣本數(shù)量有限的問(wèn)題,還能在變化環(huán)境的場(chǎng)景下進(jìn)行參數(shù)優(yōu)化,適用于動(dòng)態(tài)運(yùn)行環(huán)境.

2)基于遷移學(xué)習(xí)的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化

大數(shù)據(jù)時(shí)代下,隨著數(shù)據(jù)庫(kù)系統(tǒng)更多地部署在云服務(wù)器中,工作負(fù)載的規(guī)模不斷增大,工作負(fù)載的類型也不斷豐富,異構(gòu)性突出.工作負(fù)載的快速變化及其多樣性要求數(shù)據(jù)庫(kù)系統(tǒng)能夠智能且動(dòng)態(tài)地調(diào)整系統(tǒng)參數(shù)以達(dá)到最佳運(yùn)行時(shí)狀態(tài).在云環(huán)境下,計(jì)算和存儲(chǔ)資源可以視為是無(wú)限的,理論上數(shù)據(jù)庫(kù)系統(tǒng)可以立即執(zhí)行對(duì)資源的配置,進(jìn)行靈活地縮減或擴(kuò)張.針對(duì)不同的預(yù)算、應(yīng)用和負(fù)載特性等,人們往往會(huì)為數(shù)據(jù)庫(kù)配置不同的硬件環(huán)境和軟件版本.而不同的硬件環(huán)境和軟件版本將對(duì)參數(shù)優(yōu)化的實(shí)際表現(xiàn)產(chǎn)生很大的影響.例如,很多參數(shù)與硬件強(qiáng)相關(guān),且隨著版本變遷會(huì)增減,參數(shù)的取值范圍也會(huì)有一定差異.在這種情況下,傳統(tǒng)的固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化已不能處理新應(yīng)用場(chǎng)景下對(duì)系統(tǒng)性能的優(yōu)化.當(dāng)環(huán)境發(fā)生變化時(shí),現(xiàn)有的樣本、系統(tǒng)性能模型和優(yōu)化參數(shù)配置均會(huì)失效.在這種情況下,如何利用現(xiàn)有的優(yōu)化知識(shí),快速生成針對(duì)新環(huán)境的性能預(yù)測(cè)模型和優(yōu)化參數(shù)配置是亟待解決的一個(gè)重要問(wèn)題.

針對(duì)這一問(wèn)題,Jamshidi 等人[65]對(duì)可配置系統(tǒng)在環(huán)境變化場(chǎng)景下系統(tǒng)性能模型的變化情況進(jìn)行了初步研究,經(jīng)過(guò)大量實(shí)驗(yàn)發(fā)現(xiàn),對(duì)于較小的環(huán)境改變,可以直接對(duì)現(xiàn)有的預(yù)測(cè)模型進(jìn)行線性變換調(diào)整,而對(duì)于較為劇烈的環(huán)境變化,在源域和目標(biāo)域之間仍然可以進(jìn)行一定的知識(shí)遷移.經(jīng)過(guò)調(diào)研現(xiàn)有研究工作可知,遷移學(xué)習(xí)方法在系統(tǒng)性能建模和參數(shù)優(yōu)化方面是有效的,值得深入研究,但現(xiàn)有的相關(guān)研究工作數(shù)量還很少,研究不成熟,尚未有效解決該問(wèn)題.因此,通過(guò)基于遷移學(xué)習(xí)思想的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法在發(fā)生環(huán)境變化時(shí)充分利用現(xiàn)有系統(tǒng)的優(yōu)化知識(shí),是未來(lái)的一個(gè)重要研究方向.

3)自治數(shù)據(jù)庫(kù)

由于數(shù)據(jù)庫(kù)的性能受到多個(gè)參數(shù)的共同影響,再加上可調(diào)參數(shù)數(shù)量、數(shù)據(jù)庫(kù)體量和業(yè)務(wù)量的劇增,導(dǎo)致傳統(tǒng)的參數(shù)優(yōu)化方法無(wú)法再滿足用戶的需求.隨著自治數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,自適應(yīng)的數(shù)據(jù)庫(kù)參數(shù)調(diào)優(yōu)技術(shù)成為了解決這一難題的主要方法之一.

Pavlo 等人[68]認(rèn)為真正的自治DBMS 需要具備3 種能力:

①自動(dòng)選擇進(jìn)行何種操作以改進(jìn)某項(xiàng)性能指標(biāo),如吞吐量、時(shí)延、成本.上述的操作主要包括改變數(shù)據(jù)庫(kù)的物理設(shè)計(jì)、改變DBMS 的參數(shù)配置,或改變DBMS 的物理資源.該選擇還需要考慮進(jìn)行這一操作產(chǎn)生的資源消耗.

② 自動(dòng)選擇何時(shí)進(jìn)行這些操作.

③從上述行為中自動(dòng)學(xué)習(xí),并在沒(méi)有人工干預(yù)的情況下將過(guò)去決策的知識(shí)納入未來(lái)決策.

目前大多數(shù)的研究工作都專注于解決第1 個(gè)問(wèn)題,也有一些工作試圖解決第2 個(gè)問(wèn)題的一部分,但幾乎沒(méi)有最后一個(gè)問(wèn)題的工作.這也正是自治DBMS最為困難的一個(gè)要求,DBMS 必須知道何時(shí)部署某一操作,以及這個(gè)操作是否有幫助.這就要求系統(tǒng)必須能夠預(yù)測(cè)未來(lái)的工作負(fù)載,并進(jìn)行相應(yīng)的計(jì)劃.目前的自治數(shù)據(jù)庫(kù)系統(tǒng)由于預(yù)測(cè)能力不足,通常是在問(wèn)題發(fā)生后才做出反應(yīng),這種情況類似于一輛只能查看身后道路的自動(dòng)駕駛汽車.然而,實(shí)現(xiàn)預(yù)測(cè)最大的挑戰(zhàn)在于環(huán)境在不斷發(fā)生變化,例如:硬件會(huì)根據(jù)操作而改變,工作負(fù)載也會(huì)隨著時(shí)間發(fā)生變化.

對(duì)應(yīng)到自適應(yīng)的數(shù)據(jù)庫(kù)參數(shù)調(diào)優(yōu)問(wèn)題,根據(jù)歷史負(fù)載信息,預(yù)測(cè)工作負(fù)載未來(lái)的變化趨勢(shì)是動(dòng)態(tài)調(diào)優(yōu)數(shù)據(jù)庫(kù)配置參數(shù)的基礎(chǔ).根據(jù)預(yù)測(cè)信息,可以選擇適應(yīng)當(dāng)前環(huán)境的最優(yōu)數(shù)據(jù)庫(kù)參數(shù)配置,并確定如何進(jìn)行重新配置操作,從而保持或提升系統(tǒng)性能.這一過(guò)程中比較困難的問(wèn)題是如何確定一次行動(dòng)(即一次參數(shù)調(diào)整)的性能收益.這是由于環(huán)境不斷發(fā)生變化,因此必須研究如何從性能監(jiān)測(cè)中分離出該調(diào)整產(chǎn)生的性能影響.最后,從上述根據(jù)預(yù)測(cè)進(jìn)行調(diào)整的行動(dòng)中進(jìn)行學(xué)習(xí),并將從過(guò)去決策中學(xué)習(xí)的知識(shí)應(yīng)用于未來(lái)的決策之中.通過(guò)這些研究可以提高數(shù)據(jù)庫(kù)系統(tǒng)的易用性,使得數(shù)據(jù)庫(kù)系統(tǒng)面對(duì)多樣的環(huán)境變化能夠更加智能地動(dòng)態(tài)調(diào)整數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)配置,實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的自動(dòng)化.

6 總結(jié)

本文對(duì)數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方法的研究現(xiàn)狀進(jìn)行了綜述.首先對(duì)背景知識(shí)和研究問(wèn)題進(jìn)行了介紹,并給出數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題所面臨的挑戰(zhàn);然后對(duì)現(xiàn)有參數(shù)優(yōu)化方法進(jìn)行分類介紹.從問(wèn)題層面出發(fā),根據(jù)參數(shù)優(yōu)化過(guò)程是否涉及環(huán)境變化,將現(xiàn)有工作分為固定環(huán)境下的參數(shù)優(yōu)化方法和變化環(huán)境下的參數(shù)優(yōu)化方法2 類,介紹現(xiàn)有方法如何解決數(shù)據(jù)庫(kù)參數(shù)優(yōu)化問(wèn)題.在固定環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方面,根據(jù)方法本身是否有從歷史任務(wù)中學(xué)習(xí)的能力,將現(xiàn)有方法分為傳統(tǒng)的參數(shù)優(yōu)化方法和基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法2 類.其中,傳統(tǒng)的參數(shù)優(yōu)化方法可細(xì)分為手工參數(shù)優(yōu)化方法、基于規(guī)則的參數(shù)優(yōu)化方法、基于模型的參數(shù)優(yōu)化方法和基于搜索的參數(shù)優(yōu)化方法;基于機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法可通過(guò)使用的機(jī)器學(xué)習(xí)技術(shù)進(jìn)一步分為基于傳統(tǒng)機(jī)器學(xué)習(xí)的參數(shù)優(yōu)化方法和基于深度強(qiáng)化學(xué)習(xí)的參數(shù)優(yōu)化方法.在變化環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)優(yōu)化方面,本文根據(jù)每個(gè)方法應(yīng)對(duì)的變化場(chǎng)景,將現(xiàn)有工作分為針對(duì)工作負(fù)載變化、針對(duì)軟件版本變化、針對(duì)硬件變化和針對(duì)多種環(huán)境變化4 個(gè)場(chǎng)景進(jìn)行討論.最后,本文對(duì)研究現(xiàn)狀進(jìn)行總結(jié),對(duì)比分析了各種方法的優(yōu)勢(shì)和不足,并給出了未來(lái)的研究方向與挑戰(zhàn).

作者貢獻(xiàn)聲明:曹蓉負(fù)責(zé)相關(guān)文獻(xiàn)資料的收集、分析和論文初稿的撰寫;鮑亮提出綜述思路并指導(dǎo)寫作;崔江濤提出整體指導(dǎo)意見(jiàn)并修改論文;李輝針對(duì)研究現(xiàn)狀總結(jié)與討論提出指導(dǎo)意見(jiàn)并修改論文;周恒針對(duì)未來(lái)研究方向與挑戰(zhàn)提出指導(dǎo)意見(jiàn)并修改論文.

猜你喜歡
數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)性能
提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
微細(xì)銑削工藝數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)
數(shù)據(jù)庫(kù)
實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)安全采集方案
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
核反應(yīng)堆材料數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用
Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征