高瑞瑋,葉 青,徐小玲,劉 雯,韓 楠,楊國平,徐康鐳
(1.成都信息工程大學 軟件工程學院,四川 成都 610225;2.四川省金科成地理信息技術(shù)有限公司,四川 成都 610095;3.成都安聯(lián)云防保安服務(wù)有限公司,四川 成都 610095;4.四川省大數(shù)據(jù)中心,四川 成都 610096)
隨著云計算技術(shù)[1]被廣泛應(yīng)用于各行各業(yè),云數(shù)據(jù)庫也得到了蓬勃發(fā)展。云數(shù)據(jù)庫的查詢優(yōu)化是大型系統(tǒng)實現(xiàn)良好查詢性能的關(guān)鍵[2]。查詢優(yōu)化的目標是為給定查詢找到一組具有最低延遲的執(zhí)行計劃。對于復雜的多表連接查詢,將產(chǎn)生數(shù)千萬個不同連接順序的候選執(zhí)行計劃。如何在數(shù)千萬個候選執(zhí)行計劃中確定一組最佳連接順序的執(zhí)行計劃是查詢優(yōu)化中極具挑戰(zhàn)性的問題[3]。此外,不同連接順序能夠顯著影響執(zhí)行計劃的代價和延遲。例如,一個糟糕的連接順序的執(zhí)行計劃需要花費數(shù)小時甚至數(shù)天的查詢時間,而一個較好的連接順序的執(zhí)行計劃僅花費ms級別的查詢時間。因此,連接順序選擇被視為查詢優(yōu)化的重難點[4]。
云數(shù)據(jù)庫的查詢優(yōu)化方法為啟發(fā)式算法[5],往往基于專家經(jīng)驗,但是仍然存在局限性[6]。例如,動態(tài)規(guī)劃算法需要巨大的搜索空間,花費較長的優(yōu)化時間。QuickPick-1000[7]的優(yōu)化時間較短,但是容易生成糟糕的連接順序執(zhí)行計劃,使得查詢性能下降,并且傳統(tǒng)的查詢優(yōu)化方法無法從歷史查詢中學習經(jīng)驗。例如,對于相同的多表連接查詢會重復生成糟糕的執(zhí)行計劃,進而產(chǎn)生較高的延遲[8]。
最近,利用人工智能技術(shù)解決查詢優(yōu)化取得了成功。例如,Marcus等[9]首次提出了基于強化學習的優(yōu)化器Rejoin。隨后Krishnan等[10]提出了利用Deep Q-network(DQN)[11]算法解決連接順序選擇。現(xiàn)有基于強化學習的優(yōu)化器雖然能夠克服傳統(tǒng)的查詢優(yōu)化方法的局限性,但是仍然存在著一些缺陷:
① Rejoin和DQ等現(xiàn)有優(yōu)化器的編碼方法不包括物理運算符和執(zhí)行計劃的結(jié)構(gòu)特征,進而無法準確地表示執(zhí)行計劃。物理運算符是指執(zhí)行計劃中單表的掃描方式和多表之間的連接方式。
② Rejoin和DQ等現(xiàn)有優(yōu)化器并沒有設(shè)計狀態(tài)表示模型,無法捕捉執(zhí)行計劃的結(jié)構(gòu)特征,進而無法為后續(xù)強化學習算法提供準確的狀態(tài)表示。
③ Rejoin和DQ等現(xiàn)有優(yōu)化器使用數(shù)據(jù)庫代價估計器為執(zhí)行計劃估計代價,并將代價作為獎勵目標。對于復雜的多表連接查詢,并不能準確估計中間結(jié)果集的代價,容易出現(xiàn)錯誤的代價估計[12],進而生成次優(yōu)的執(zhí)行計劃。
④ Neo[13]和AlphaJoin[14]等現(xiàn)有優(yōu)化器使用價值網(wǎng)絡(luò)為執(zhí)行計劃預(yù)測延遲,并將延遲作為優(yōu)化目標。雖然能夠避免錯誤的代價估計導致生成次優(yōu)的執(zhí)行計劃,但是Neo和AlphaJoin的價值網(wǎng)絡(luò)的預(yù)測準確性較低,并且需要高質(zhì)量的歷史查詢樣本進行訓練[15]。
⑤ Neo等現(xiàn)有優(yōu)化器使用簡單的搜索策略指導連接順序選擇,并沒有嘗試在更大的搜索空間中進行探索,可能會降低找到最優(yōu)執(zhí)行計劃的概率,容易陷入局部最優(yōu)解。
⑥ Rejoin和DQ等現(xiàn)有優(yōu)化器的強化學習算法的探索性較差,容易受到超參數(shù)的影響,并且訓練速度較慢、收斂不穩(wěn)定[16-18]。
針對上述問題,提出了一種新型基于異步Soft Actor-Critic的連接查詢優(yōu)化器(Asynchronous Soft Actor-Critic for Join Query,ASA-Join)。ASA-Join集成了一種新的編碼方法,將物理運算符和執(zhí)行計劃的結(jié)構(gòu)特征進行編碼,能夠準確地表示執(zhí)行計劃。ASA-Join設(shè)計了狀態(tài)表示模型,利用BiGRU[19]模型來捕捉執(zhí)行計劃的結(jié)構(gòu)特征,進而能夠為異步Soft Actor-Critic提供準確的狀態(tài)表示。ASA-Join設(shè)計了新的獎勵機制,利用多任務(wù)學習方法[20]將執(zhí)行計劃的延遲和代價均作為優(yōu)化目標,進而使得執(zhí)行計劃能夠反映真實的查詢時間。ASA-Join利用多線程通信機制設(shè)計了異步Soft Actor-Critic算法。異步Soft Actor-Critic算法指導連接順序選擇,利用最大熵機制能夠增加動作選擇的隨機性,進而提高智能體的探索能力,盡可能從全局上搜索最優(yōu)執(zhí)行計劃。異步Soft Actor-Critic算法不依賴于精確的超參數(shù)調(diào)整,并且多線程通信機制能夠?qū)崿F(xiàn)異步更新,進而加快訓練速度并提高收斂穩(wěn)定性。在真實數(shù)據(jù)集Join Order Benchmark (JOB)[21]和TPC-H上對ASA-Join的性能進行評估。實驗結(jié)果表明,ASA-Join的代價和延遲均低于現(xiàn)有基于強化學習的優(yōu)化方法。
ASA-Join的整體架構(gòu)如圖1所示。
圖1 ASA-Join的整體架構(gòu)Fig.1 The overall framework of ASA-Join
ASA-Join主要由3個關(guān)鍵部分構(gòu)成:編碼方法、狀態(tài)表示模型以及異步Soft Actor-Critic算法。
① 編碼方法主要由查詢語句編碼Query-Encoding和執(zhí)行計劃編碼Plan-Encoding組成。Query-Encoding主要對查詢語句的連接謂詞和選擇謂詞進行編碼,Plan-Encoding主要對執(zhí)行計劃的結(jié)構(gòu)特征和物理運算符進行編碼,進而生成執(zhí)行計劃向量樹。
② 狀態(tài)表示模型主要對執(zhí)行計劃向量樹進行序列化處理,生成執(zhí)行計劃向量集,并將執(zhí)行計劃向量集作為BiGRU模型的輸入,進而BiGRU模型能夠捕捉執(zhí)行計劃的結(jié)構(gòu)特征,為異步Soft Actor-Critic提供準確的狀態(tài)表示。
③ 異步Soft Actor-Critic算法包含1個Actor網(wǎng)絡(luò)、2個Value-Critic和2個Q-Critic。Actor網(wǎng)絡(luò)將當前執(zhí)行計劃狀態(tài)作為輸入,進而從動作空間中選擇將要執(zhí)行的動作,例如選擇2個表進行連接,并指定掃描方式(Sequence-Scan,Index-Scan)以及連接方式(Hash-Join,Nest-Loop-Join,Merge-Join)。Value-Critic網(wǎng)絡(luò)主要對當前執(zhí)行計劃狀態(tài)進行評估,輸出狀態(tài)價值。Q-Critic網(wǎng)絡(luò)主要對當前執(zhí)行計劃狀態(tài)下將要執(zhí)行的動作進行評估,輸出動作價值。每當ASA-Join執(zhí)行Actor網(wǎng)絡(luò)選擇的動作后,將更新執(zhí)行計劃編碼,進而更新執(zhí)行計劃狀態(tài),使得Actor網(wǎng)絡(luò)從動作空間中再次選擇將要執(zhí)行的動作,直到達到終止狀態(tài)(所有表均被連接,生成完整執(zhí)行計劃)。
進一步地,完整執(zhí)行計劃將被發(fā)送給云數(shù)據(jù)庫,云數(shù)據(jù)庫的代價估計器和執(zhí)行器分別為完整執(zhí)行計劃給出代價和延遲,并利用多任務(wù)學習方法將執(zhí)行計劃的代價和延遲均作為獎勵目標。需要注意的是,收集執(zhí)行計劃的代價不需要運行執(zhí)行計劃,因此將執(zhí)行計劃的代價作為第1階段的獎勵目標,使得ASA-Join能夠快速理解以代價作為獎勵目標的云數(shù)據(jù)庫優(yōu)化方式。執(zhí)行計劃的延遲是云數(shù)據(jù)庫運行執(zhí)行計劃的時間,難以短時間內(nèi)獲取,因此將執(zhí)行計劃的延遲作為第2階段的獎勵目標。在第1階段訓練后,ASA-Join能夠生成較優(yōu)的執(zhí)行計劃,再使用執(zhí)行計劃的延遲作為獎勵目標進行微調(diào),使得ASA-Join最終生成的執(zhí)行計劃能夠反映真實的執(zhí)行時間,并避免錯誤的代價估計導致生成次優(yōu)的執(zhí)行計劃。
此外,在ASA-Join的訓練過程中,利用多線程通信機制來異步更新Soft Actor-Critic的參數(shù)。在每個線程中均包含具有相同結(jié)構(gòu)和相同參數(shù)的Soft Actor-Critic。選擇任意一個線程中的Soft Actor-Critic作為全局模型,其余線程中的Soft Actor-Critic作為計算模型。計算模型主要與云數(shù)據(jù)庫進行交互,獲取數(shù)據(jù)樣本(狀態(tài)、動作和獎勵等信息)來計算Soft Actor-Critic中各個網(wǎng)絡(luò)的參數(shù)梯度,但并不用于更新計算模型,而是用于更新全局模型的參數(shù)。
Query-Encoding的示例如圖2所示。
圖2 Query-Encoding的示例Fig.2 Example of Query-Encoding
主要對查詢語句的連接謂詞和選擇謂詞進行編碼。連接謂詞首先使用維度為N的鄰接矩陣M進行編碼,其中N為云數(shù)據(jù)庫中表的數(shù)量。鄰接矩陣的元素Mi,j取值為0或者1,1代表第i個表與第j個表具有連接關(guān)系,0代表第i個表與第j個表無連接關(guān)系,i和j均為整數(shù),且0
vi*(N-1)+j=Mi,j
(1)
式中,vi*(N-1)+j為連接謂詞向量v的第i*(N-1)+j個位置上的值。選擇謂詞使用獨熱向量進行編碼,生成選擇謂詞向量u,獨熱向量的維度為云數(shù)據(jù)庫中列的數(shù)量。為了便于說明Query-Encoding,給出了一個查詢語句例子,如圖2所示。查詢語句的連接謂詞為E.a=F.a,E.b=G.b,E.c=H.c,則鄰接矩陣中對應(yīng)位置元素的值為1,連接謂詞向量v為(0111 1000 1000 1000)。查詢語句的F.a列和H.c列涉及選擇謂詞,則選擇謂詞向量u中對應(yīng)位置的值為1,其余位置的值為0。
Plan-Encoding將執(zhí)行計劃的物理運算符和結(jié)構(gòu)特征進行編碼。執(zhí)行計劃的物理運算符包括掃描方式和連接方式。掃描方式使用獨熱向量進行編碼,例如(10)表示執(zhí)行計劃中某個表使用Sequence-Scan,(01)表示執(zhí)行計劃中某個表使用Index-Scan。連接方式使用獨熱向量進行編碼,例如(100)表示執(zhí)行計劃中某2個表使用Hash-Join生成中間結(jié)果集,(010)表示執(zhí)行計劃中某2個表使用Nest-Loop-Join生成中間結(jié)果集,(001)表示執(zhí)行計劃中某2個表使用Merge-Join生成中間結(jié)果集。
執(zhí)行計劃的結(jié)構(gòu)特征包括執(zhí)行計劃的節(jié)點類型、節(jié)點連接順序。執(zhí)行計劃的節(jié)點類型包括左表、右表和中間結(jié)果集。執(zhí)行計劃的節(jié)點類型使用獨熱向量進行編碼,例如(10)表示執(zhí)行計劃的節(jié)點類型為左表,(01)表示執(zhí)行計劃的節(jié)點類型為右表,(11)表示執(zhí)行計劃的節(jié)點類型為中間結(jié)果集。執(zhí)行計劃的節(jié)點連接順序使用2位整數(shù)進行編碼,例如(01)表示第1次選擇該節(jié)點進行連接或者第1次生成該節(jié)點,(02)表示第2次選擇該節(jié)點進行連接或者第2次生成該節(jié)點。
進一步,Plan-Encoding將執(zhí)行計劃編碼為執(zhí)行計劃向量樹,執(zhí)行計劃向量樹中每一個節(jié)點向量均由該節(jié)點的物理運算符編碼、節(jié)點類型編碼和節(jié)點連接順序編碼組成。需要注意的是,執(zhí)行計劃分為部分執(zhí)行計劃和完整執(zhí)行計劃,因此執(zhí)行計劃向量樹中的節(jié)點數(shù)量將動態(tài)增長。為了便于說明Plan-Encoding,基于圖2的查詢語句給出了部分執(zhí)行計劃向量樹。Plan-Encoding示例如圖3所示,假設(shè)第1次選擇E表和F表使用Hash-Join生成中間結(jié)果集(EF),并指定E表作為左表、E表掃描方式為Sequence-Scan,F(xiàn)表作為右表、F表掃描方式為Sequence-Scan。第2次選擇表E和表G進行連接,也就是將中間結(jié)果集(EF)和表G使用Nest-Loop-Join生成中間結(jié)果集((EF)G),并指定G表作為右表、G表掃描方式為Index-Scan。
圖3 Plan-Encoding示例Fig.3 Example of Plan-Encoding
準確的狀態(tài)表示能夠提升強化學習算法的性能。因此,ASA-Join設(shè)計了狀態(tài)表示模型對連接謂詞向量、選擇謂詞向量和執(zhí)行計劃向量樹進行處理。對于連接謂詞向量和選擇謂詞向量,狀態(tài)表示模型使用全連接層進行處理,生成靜態(tài)信息向量q,能夠克服連接謂詞向量和選擇謂詞向量的稀疏性。對于執(zhí)行計劃向量樹,狀態(tài)表示模型首先使用后序遍歷算法進行序列化處理,生成執(zhí)行計劃向量集。為了便于說明狀態(tài)表示模型使用后序遍歷算法對執(zhí)行計劃向量樹進行序列化處理的過程,基于圖3中的部分執(zhí)行計劃向量樹給出了一個例子。如圖4所示,依次訪問部分執(zhí)行計劃向量樹各個節(jié)點向量,并按訪問順序?qū)⒐?jié)點向量存入執(zhí)行計劃向量集。
圖4 基于后序遍歷算法處理執(zhí)行計劃向量樹Fig.4 Processing execution plan vector tree based on post-order traversal algorithm
狀態(tài)表示模型使用BiGRU模型對執(zhí)行計劃向量集進行處理,能夠捕捉執(zhí)行計劃的結(jié)構(gòu)特征,并生成動態(tài)信息向量p。不同結(jié)構(gòu)特征的執(zhí)行計劃向量樹可以轉(zhuǎn)換為執(zhí)行計劃向量集。換言之,捕捉執(zhí)行計劃的結(jié)構(gòu)特征可以轉(zhuǎn)換為捕捉有序節(jié)點的上下文信息。BiGRU適合處理序列數(shù)據(jù),即使是相當長的序列數(shù)據(jù) (如在自然語言處理中)。因此,對于執(zhí)行計劃向量樹,BiGRU能夠自動學習執(zhí)行計劃的結(jié)構(gòu)特征,進而給出執(zhí)行計劃的準確表示。對于執(zhí)行計劃向量集,BiGRU依次處理執(zhí)行計劃向量集中每個節(jié)點向量,進而捕捉執(zhí)行計劃中節(jié)點之間的上下文信息。當 BiGRU 處理當前節(jié)點向量時,BiGRU 可以同時記住前一個節(jié)點以及后一個節(jié)點的關(guān)鍵信息,例如結(jié)構(gòu)特征。即使 BiGRU 處理最后一個節(jié)點向量,仍然可以記住第1個節(jié)點向量包含的結(jié)構(gòu)信息,進而捕捉整個執(zhí)行計劃向量樹的結(jié)構(gòu)特征。狀態(tài)表示模型將靜態(tài)信息向量q和動態(tài)信息向量p進行級聯(lián),最終生成執(zhí)行計劃狀態(tài)向量s。基于圖4中的例子,狀態(tài)表示模型的工作原理如圖5所示。
圖5 狀態(tài)表示模型的工作機制Fig.5 Working mechanism of the state representation model
現(xiàn)有強化學習算法通常存在3類問題:
① 探索能力、健壯性較差;
② 依賴于精確的超參數(shù)設(shè)置;
③ 訓練速度較慢、收斂不穩(wěn)定。
為了ASA-Join更好地指導連接順序選擇,提出了異步Soft Actor-Critic算法。異步Soft Actor-Critic算法利用最大熵機制能夠增加策略的隨機性,并鼓勵智能體選擇從未嘗試的動作,進而更全面地評估各個動作的價值。最大熵機制能夠增加智能體的探索能力并提高算法的健壯性。此外,利用多線程通信機制實現(xiàn)異步更新,能夠加快訓練速度,并且使用基于當前策略的數(shù)據(jù)樣本計算參數(shù)梯度,能夠提高訓練效果和收斂穩(wěn)定性。異步Soft Actor-Critic算法步驟如算法1所示。
算法1:異步Soft Actor-Critic算法
輸入:Actor網(wǎng)絡(luò)的初始參數(shù)WA,Value-Critic網(wǎng)絡(luò)的初始參數(shù)WV,Q-Critic網(wǎng)絡(luò)的初始參數(shù)WQ
1. CreateThreads();
2. Allocation();
3. SelectGlobalModel();
6. SetT=0,T最大值為Tmax;
7. Sett=1,t的最大間隔值為tmax;
8. WHILE (T 11. Resettstart=t; 12.st=GetState(); 13.FOReach episodeDO 14. 計算模型中Actor網(wǎng)絡(luò)根據(jù)st選擇動作at; 15.st+1=ChangeState(st,at); 16. IF (st表示完整執(zhí)行計劃狀態(tài)){ 17.r(st,at)=costorlatency; 18. } 19.ELSE{ 21. } 25.t=t+1,T=T+1; 26.IF(t-tstart=tmax){ 29.ENDFOR 異步Soft Actor-Critic算法主要包含如下操作: ⑤ 算法第25~28行分別更新線程計數(shù)器和全局計數(shù)器的計數(shù)值t,T。如果間隔計數(shù)值等于tmax, 將計算模型中的參數(shù)梯度傳遞到全局模型中來更新全局模型的參數(shù)。 實驗數(shù)據(jù)集為JOB和TPC-H數(shù)據(jù)集。JOB數(shù)據(jù)集是基于電影數(shù)據(jù)集IMDB的查詢語句集合,包括33個查詢模板和113個復雜的多表連接查詢語句,其中多表連接查詢語句平均包含9個連接謂詞,最多包含17個連接謂詞。所有的查詢語句真實地反映了電影愛好者的問題。電影數(shù)據(jù)集IMDB包含3.6 GB非均勻分布數(shù)據(jù)和21個表,其中表cast_info和movie_info分別包含3 000萬行記錄和1 500萬行記錄。TPC-H數(shù)據(jù)集是基于供貨業(yè)務(wù)數(shù)據(jù)集的查詢語句集合,包括22個查詢語句。供貨業(yè)務(wù)數(shù)據(jù)集由DBGen工具模擬生成,包含4.0 GB數(shù)據(jù)和8個表。 實驗硬件環(huán)境為具有12核24線程的CPU、NVIDIA 3090GTX顯卡、64 GB內(nèi)存和2 TB硬盤的戴爾服務(wù)器。實驗軟件環(huán)境為OpenAI-gym強化學習交互環(huán)境庫、RLlib強化學習算法庫、Tensorflow2.0。 實驗所用云數(shù)據(jù)庫為華為云數(shù)據(jù)庫Relational Database Service(RDS) for PostgreSQL、阿里云數(shù)據(jù)庫RDS for PostgreSQL和云數(shù)據(jù)庫GuassDB[22]。RDS for PostgreSQL,RDS for PostgreSQL和GuassDB的代價估計器和執(zhí)行器為執(zhí)行計劃提供代價和延遲。 為了便于直觀地比較ASA-Join與現(xiàn)有基于強化學習的優(yōu)化器的性能差異,使用相對代價 (Relative Cost,RC)和相對延遲 (Relative Latency,RL)作為評估指標。RC計算如下: (2) 式中,cost(qi)表示ASA-Join或現(xiàn)有基于強化學習的優(yōu)化器為第i條查詢語句生成相應(yīng)執(zhí)行計劃的代價;n為JOB數(shù)據(jù)集或TPC-H數(shù)據(jù)集中查詢語句的數(shù)量;costdp(qi)表示動態(tài)規(guī)劃方法為第i條查詢語句生成相應(yīng)執(zhí)行計劃的代價。RL計算如下: (3) 式中,latency(qi)表示ASA-Join或現(xiàn)有基于強化學習的優(yōu)化器為第i條查詢語句生成相應(yīng)執(zhí)行計劃的延遲;latencydp(qi)表示動態(tài)規(guī)劃方法為第i條查詢語句生成相應(yīng)執(zhí)行計劃的延遲。 基于不同云數(shù)據(jù)庫的JOB數(shù)據(jù)集的代價評估如圖6所示。 圖6 基于不同云數(shù)據(jù)庫的JOB數(shù)據(jù)集的代價評估Fig.6 Cost evaluation of JOB datasets based on different cloud databases 基于RDS for PostgreSQL構(gòu)建ASA-Join和現(xiàn)有基于強化學習的優(yōu)化器如圖6(a)所示。在JOB數(shù)據(jù)集上,ASA-Join的相對代價低于現(xiàn)有基于強化學習的優(yōu)化器如Rejoin,DQ,Neo和AlphaJoin,這表明ASA-Join能夠生成以代價為優(yōu)化目標的最優(yōu)執(zhí)行計劃。主要原因在于,相比Rejoin和DQ,ASA-Join能夠捕捉執(zhí)行計劃的結(jié)構(gòu)特征并提供執(zhí)行計劃的準確表示,進而可以提高后續(xù)異步Soft Actor-Critic算法的性能;相比Neo和AlphaJoin,ASA-Join的異步Soft Actor-Critic算法能夠增加策略的隨機性以及提高智能體的探索能力,避免陷入局部最優(yōu)解,盡可能生成最優(yōu)執(zhí)行計劃?,F(xiàn)有基于強化學習的優(yōu)化器的相對代價均低于傳統(tǒng)優(yōu)化方法QP(QuickPick-1000),這表明利用強化學習能夠更好地指導連接順序選擇,進而生成更低代價的執(zhí)行計劃。如圖6(a)和(b)所示,分別基于RDS for PostgreSQL,GuassDB構(gòu)建ASA-Join和現(xiàn)有基于強化學習的優(yōu)化器。在JOB數(shù)據(jù)集上,ASA-Join的相對代價低于現(xiàn)有基于強化學習的優(yōu)化器。其中,AlphaJoin的相對代價最接近ASA-Join,傳統(tǒng)優(yōu)化QP的相對代價最大。 基于不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集的代價評估如圖7所示, 在不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集上,ASA-Join均能夠生成更好的執(zhí)行計劃(以代價為優(yōu)化目標),這表明ASA-Join能夠適應(yīng)不同的云數(shù)據(jù)庫,并不依賴于特定云數(shù)據(jù)庫,具有較高的通用性。在代價評估方面,ASA-Join始終優(yōu)于現(xiàn)有基于強化學習的優(yōu)化器和傳統(tǒng)的優(yōu)化方法。 圖7 基于不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集的代價評估Fig.7 Cost evaluation of TPC-H datasets based on different cloud databases 基于不同云數(shù)據(jù)庫的JOB數(shù)據(jù)集的延遲評估如圖8所示。 圖8 基于不同云數(shù)據(jù)庫的JOB數(shù)據(jù)集的延遲評估Fig.8 Latency evaluation of JOB datasets based on different cloud databases 可以看出,在不同云數(shù)據(jù)庫的JOB數(shù)據(jù)集上,ASA-Join的相對延遲均最低,并且ASA-Join的相對延遲分別為0.60(基于RDS for PostgreSQL),0.61(基于GuassDB)和0.63(基于RDS for PostgreSQL)。在延遲評估方面,ASA-Join優(yōu)于現(xiàn)有基于強化學習的優(yōu)化器和傳統(tǒng)的優(yōu)化方法。主要原因在于,ASA-Join的獎勵機制基于多任務(wù)學習思想,將延遲和代價均作為優(yōu)化目標。換言之,ASA-Join既可以學習以代價作為獎勵的策略,也可以學習以延遲為獎勵的策略,能夠克服錯誤的代價估計和基數(shù)估計,使得生成的執(zhí)行計劃反映真實查詢時間。此外,ASA-Join的異步Soft Actor-Critic算法能夠加快訓練速度、提高收斂穩(wěn)定性,進而提高ASA-Join的訓練效果。在RDS for PostgreSQL上,ASA-Join的相對延遲分別比Rejoin(相對延遲為1.20)低50.0%,比DQ(相對延遲為1.15)低47.8%,比Neo(相對延遲為0.80)低25.0%,比AlphaJoin(相對延遲為0.72)低16.7%。在GuassDB上,ASA-Join的相對延遲分別比Rejoin(相對延遲為1.12)低45.5%,比DQ(相對延遲為1.17)低48.7%,比Neo(相對延遲為0.78)低21.8%,比AlphaJoin(相對延遲為0.70)低12.9%。在RDS for PostgreSQL上,ASA-Join的相對延遲分別比Rejoin(相對延遲為1.18)低46.6%,比DQ(相對延遲為1.19)低47.1%,比Neo(相對延遲為0.82)低23.2%,比AlphaJoin(相對延遲為0.74)低14.9%。在JOB數(shù)據(jù)集上,ASA-Join的相對延遲與其他優(yōu)化方法的差距較大,主要原因是JOB數(shù)據(jù)集中的查詢語句均為復雜的多表連接查詢,平均包含9個以上的連接謂詞,使得候選執(zhí)行計劃的結(jié)構(gòu)復雜多變。ASA-Join的編碼方法能夠準確表示執(zhí)行計劃,并且利用BiGRU模型能夠捕捉執(zhí)行計劃的結(jié)構(gòu)特征,為異步Soft Actor-Critic提供準確的狀態(tài)表示,進而使異步Soft Actor-Critic能夠更好地指導多表連接順序選擇,ASA-Join生成更好的執(zhí)行計劃(以延遲為優(yōu)化目標)。 基于不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集的延遲評估如圖9所示??梢钥闯?,在不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集上,ASA-Join的相對延遲也低于現(xiàn)有基于強化學習的優(yōu)化器和傳統(tǒng)的優(yōu)化方法。在TPC-H數(shù)據(jù)集上,ASA-Join的相對延遲與其他優(yōu)化方法的差距并不是很大,主要原因是TPC-H數(shù)據(jù)集中查詢語句包含的連接謂詞的數(shù)量較少,現(xiàn)有基于強化學習的優(yōu)化器均能夠較好地指導連接順序選擇,而ASA-Join更擅長處理復雜的多表連接查詢。 圖9 基于不同云數(shù)據(jù)庫的TPC-H數(shù)據(jù)集的延遲評估Fig.9 Latency evaluation of TPC-H datasets based on different cloud databases 本文針對云數(shù)據(jù)庫的啟發(fā)式查詢優(yōu)化方法和現(xiàn)有基于強化學習的優(yōu)化器存在的缺陷,提出了新型基于異步Soft Actor-Critic的連接查詢優(yōu)化器。首先,ASA-Join集成了新的編碼方法,包括Query-Encoding和Plan-Encoding,能夠準確表示執(zhí)行計劃。其次,ASA-Join設(shè)計了狀態(tài)表示模型來捕捉執(zhí)行計劃的結(jié)構(gòu)特征,進而提供準確的狀態(tài)表示,使得異步Soft Actor-Critic能更好地指導連接順序選擇。再者,ASA-Join利用多線程通信機制設(shè)計了異步Soft Actor-Critic算法。異步Soft Actor-Critic利用最大熵機制增加智能體的探索能力,使得智能體能夠探索更多從未嘗試的動作,并且多線程通信機制能夠?qū)崿F(xiàn)異步更新,進而加快訓練速度以及提高收斂穩(wěn)定性。此外,ASA-Join將執(zhí)行計劃的代價和延遲均作為獎勵目標,使得生成的執(zhí)行計劃能夠反映真實的查詢時間。 未來的工作將著重探究云數(shù)據(jù)庫模式的頻繁改變對基于強化學習的優(yōu)化器的影響,并基于ASA-Join進一步研究新的優(yōu)化器如何適應(yīng)工作負載的變化。5 ASA-Join的實驗評估
5.1 實驗設(shè)置
5.2 實驗評估指標
5.3 ASA-Join的相對代價評估
5.4 ASA-Join的相對延遲評估
6 結(jié)束語