柳浩楠,牛保寧,程永強
太原理工大學 信息與計算機學院,山西 晉中 030600
在絕大多數(shù)以數(shù)據(jù)庫管理系統(tǒng)(database management system,DBMS)為支持的應用軟件中,查詢操作占據(jù)的比重最大。查詢不僅直接決定了系統(tǒng)的運行效率,也影響著應用的性能。查詢執(zhí)行計劃是查詢執(zhí)行的操作步驟,一個查詢可以有多種執(zhí)行計劃[1]。查詢提交運行時,DBMS 為查詢生成一組不壞的執(zhí)行計劃,計算代價,從中選擇一個較優(yōu)執(zhí)行計劃[2]。
查詢的并行執(zhí)行可以提升資源利用率和吞吐量,同時,查詢之間的相互影響——查詢交互(query interaction,QI)[3-4]使得查詢執(zhí)行計劃的選擇成為一個難題。QI 是指兩個或兩個以上的查詢并行運行時,查詢對系統(tǒng)資源的爭用而引起的執(zhí)行效率的改變[5],體現(xiàn)于查詢等待資源與使用資源時間的改變,即查詢執(zhí)行計劃代價的改變。由于QI 的存在,較優(yōu)執(zhí)行計劃的選擇需要考慮查詢組合及其QI[4]。并行執(zhí)行的查詢集合被稱為查詢組合(query mix),并行執(zhí)行的查詢個數(shù)被稱作并行度(multi-programming level,MPL)。由于存在調度、資源競爭等難以量化的動態(tài)因素,查詢優(yōu)化器在為一個新進入系統(tǒng)的查詢選擇執(zhí)行計劃時,難以量化DBMS的資源情況和運行狀態(tài),導致難以為該查詢選擇合適的執(zhí)行計劃。
目前,把QI用于執(zhí)行計劃選擇的方法,通過建立分析模型來估算QI[4-6]。這些方法能夠在一定程度上反映QI,但存在以下問題:(1)對QI 建模限于查詢響應時間的函數(shù),不考慮DBMS 的系統(tǒng)狀態(tài)。QI 對系統(tǒng)的影響是多方面的,很難用一個值來描述,準確地度量QI需要考查系統(tǒng)的多個維度。(2)預先設定的函數(shù)模型難以準確描述復雜多變的QI。
深度學習為QI 的度量提供了新的思路:通過訓練深度學習神經網(wǎng)絡,建立一個“黑盒”模型,來擬合難以表示的復雜多變的函數(shù)關系,在建立模型的過程中可以不用考慮模型的細節(jié),而重點關注模型的輸入與輸出。更進一步,在度量QI的基礎上,深度學習神經網(wǎng)絡也可以用來為查詢動態(tài)地選擇較優(yōu)執(zhí)行計劃。
按照上述思路,本文嘗試把深度學習技術用于并行查詢的執(zhí)行計劃選擇,提出利用查詢組合的執(zhí)行計劃特征(features of execution plan,F(xiàn)EP)和并行場景下QI 特征參數(shù)的變化量作為輸入,訓練深度學習神經網(wǎng)絡,估算QI;用估算的QI 作為查詢交互特征(features of query interaction,F(xiàn)QI),再結合查詢的候選執(zhí)行計劃特征(features of candidate plan,F(xiàn)CP)共同作為選擇較優(yōu)執(zhí)行計劃的依據(jù)。
本文的創(chuàng)新點如下:
(1)把查詢的平均響應時間、平均執(zhí)行時間、平均I/O 時間和平均緩沖區(qū)命中率作為QI 的特征參數(shù);提出一種多維度查詢交互度量模型(multi-dimensional measurement of query interaction,MMQI),采用雙向長短期記憶(bidirectional long-short term memory,Bi-LSTM)神經網(wǎng)絡,把FEP作為模型的輸入,預測QI特征參數(shù)的改變,度量QI。
(2)引入QueryMixRating,表示一個查詢在查詢組合中受QI 影響導致的平均響應時間的改變程度,作為度量QI 與選擇較優(yōu)執(zhí)行計劃的依據(jù);提出執(zhí)行計劃選擇(execution plan selection,EPS)模型,把MMQI 的輸出作為FQI,與FCP 融合后作為另一個Bi-LSTM 的輸入,為查詢選擇較優(yōu)執(zhí)行計劃。
與本文內容相關的研究可以分為對QI 的度量方法、選擇查詢執(zhí)行計劃的方法和深度學習在查詢優(yōu)化方面的應用。
(1)對QI的度量
在查詢并行執(zhí)行場景下,為查詢選擇合適的執(zhí)行計劃需要考慮QI的因素。目前對于QI的估算采用建立數(shù)學分析模型的途徑。B2L&B2cB[7]模型用BAL(buffer access latency)——一種基于邏輯I/O 的度量標準來量化并行執(zhí)行的查詢性能影響,采用查詢并行與單獨運行的時間差衡量QI。QueryRating[5]方法通過計算查詢組合中兩兩查詢并行運行與單獨運行的時間比值很好地度量兩個查詢的QI。TRating[6]模型認為查詢單獨運行的時間會影響其加入查詢組合后受QI 作用的時長,顯示出QI是影響查詢的主要因素。
(2)選擇查詢執(zhí)行計劃的方法
DBMS 的查詢優(yōu)化器負責為查詢選擇較優(yōu)執(zhí)行計劃,采用基于規(guī)則和代價的查詢優(yōu)化兩個層次,分別為查詢生成和選擇執(zhí)行計劃[8]。在執(zhí)行計劃生成層次,查詢優(yōu)化器將查詢語句轉化為關系代數(shù)表達式,根據(jù)基本表的掃描方式、關系間的連接方式與連接順序[9]為查詢生成執(zhí)行計劃,并計算開銷;在執(zhí)行計劃選擇層次,查詢優(yōu)化器根據(jù)查詢所涉及的關系、數(shù)據(jù)分布、索引等情況,結合DBMS 的靜態(tài)參數(shù)配置,選擇較優(yōu)執(zhí)行計劃。PLASTIC[10]模型假設數(shù)據(jù)庫系統(tǒng)是靜態(tài)的,通過計算查詢的相似度生成聚類,構建查詢分類器為新進入的查詢判定可能所屬的類別而確定查詢的執(zhí)行計劃,忽略了QI 對查詢選擇執(zhí)行計劃的影響。TRating[6]模型綜合考慮了查詢受到QI 的阻力大小QIs 和特定執(zhí)行計劃與所有執(zhí)行計劃響應時間之和的比值Fac,將二者共同作為選擇執(zhí)行計劃的關鍵因素,可以較好地解決簡單QI 場景下的并行查詢執(zhí)行計劃選擇問題。
(3)深度學習在查詢優(yōu)化方面的應用
近年來,用深度學習的手段優(yōu)化數(shù)據(jù)庫性能取得了良好的效果,如優(yōu)化代價模型或提高基數(shù)估計準確性等[11-14]。Neural Optimizer[15]利用深度網(wǎng)絡估計代價,為查詢生成較優(yōu)執(zhí)行計劃。QPPNet[16]模型引入運算符級神經單元構造樹型網(wǎng)絡結構進行查詢性能預測,顯示了查詢執(zhí)行計劃父子節(jié)點的關聯(lián)。圖嵌入模型GPredictor[17]將查詢特征、運算符相關性編碼為頂點和邊,構建圖嵌入網(wǎng)絡預測查詢性能。采用LSTM 對查詢執(zhí)行時間區(qū)間的預測,有較好的效果[18]。LSTM-FCN[19]考慮目標查詢響應時間的改變量與剩余各查詢受到目標查詢影響而引起的響應時間改變量之和,作為設計標簽的目標函數(shù),忽略了查詢組合中剩余查詢之間QI的改變;其設定查詢組合中剩余各查詢對目標查詢造成響應時間的改變量作為FQI,結合目標查詢選擇不同執(zhí)行計劃時的查詢組合特征,在并行查詢較優(yōu)執(zhí)行計劃選擇方面取得了不錯的效果,未能從DBMS 的角度細粒度地考慮QI 對查詢組合的影響。
針對目前QI 復雜多變,數(shù)學分析模型難以準確度量的問題,本文提出采用Bi-LSTM 結合特征參數(shù)度量QI,為查詢動態(tài)選擇當前查詢組合下的較優(yōu)執(zhí)行計劃。
使用深度學習實現(xiàn)并行查詢交互度量及執(zhí)行計劃選擇的關鍵是:尋找能夠準確反映QI 的特征參數(shù),設計合適的輸入與輸出特征,以及選取合適的深度學習模型。
本文涉及到的相關符號定義如表1所示。
表1 相關符號定義Table 1 Definition of related symbols
QueryRating[5]通過計算查詢并行時和單獨執(zhí)行時平均響應時間的比值,表示查詢qi在MPL=2 時的查詢交互,度量查詢qi受QI的影響程度。在MPL>2 的情況下,本文推廣QueryRating,把查詢組合M中其他查詢對qi的影響看作一個整體,定義Rqi/M-qi為qi在查詢組合M中的QueryMixRating:
其中,tqi/qM表示qi在M中執(zhí)行的平均響應時間,tqi表示qi單獨執(zhí)行的平均響應時間。
查詢的響應時間體現(xiàn)了查詢使用資源與等待資源的整體效果,但是在選擇并行查詢的執(zhí)行計劃時,需要考慮QI對系統(tǒng)資源使用的細粒度和多角度的影響。一方面,查詢或查詢執(zhí)行計劃不同,QI 也不同。例如,某些查詢或查詢執(zhí)行計劃包括多種聚合函數(shù),此類操作會占用大量的CPU 資源;而另一些查詢或查詢執(zhí)行計劃的全表掃描操作卻會引起大量的I/O。它們對系統(tǒng)資源的消耗體現(xiàn)在查詢的執(zhí)行時間或I/O 時間上。另一方面,DBMS為提高查詢效率提供了多種優(yōu)化手段。查詢執(zhí)行時,DBMS 將查詢所需要的數(shù)據(jù)從外存加載到內存,并且將一部分數(shù)據(jù)寫入共享緩沖區(qū)(shared buffer)以提高下一次讀取的速度。查詢并行執(zhí)行時,查詢可能因讀取其他查詢寫入共享緩沖區(qū)的數(shù)據(jù)而減少I/O,也可能因多個查詢同時寫入共享緩沖區(qū)而導致緩存的數(shù)據(jù)量減小,使下一次執(zhí)行時I/O時間增加。
查詢的平均執(zhí)行時間、平均I/O時間、平均緩沖區(qū)命中率是查詢實際執(zhí)行代價的具體體現(xiàn),它們的變化量分別體現(xiàn)QI 引起查詢在使用CPU、使用I/O 資源、數(shù)據(jù)緩沖與共享方面的變化,采用它們結合查詢的平均響應時間的變化量,能夠更全面地反映QI 對查詢的影響。QI特征參數(shù)的定義見表2。
表2 QI特征參數(shù)Table 2 QI parameters
并行場景下,設{texec,tio,rbuf}為QI 特征參數(shù)集,依次為查詢的平均執(zhí)行時間、平均I/O 時間和平均緩沖區(qū)命中率。其中,QI特征參數(shù)的變化量uix計算方式如下:
x為某QI 特征參數(shù),xqi/qM表示查詢qi在查詢組合M中執(zhí)行時特征參數(shù)x的值,xqi表示查詢qi單獨執(zhí)行時特征參數(shù)x的值。
并行場景下,設M′={qi|1 ≤i≤MPL-1}為數(shù)據(jù)庫系統(tǒng)中正在運行的查詢組合,查詢qj加入時,從查詢qj的候選執(zhí)行計劃集合Q={qjk|k=1,2,…}中選擇執(zhí)行計劃k,使得新查詢組合M={M′,qjk}在單位時間內總工作量的變化量最大,即平均響應時間變化量的總和最?。?/p>
作為選擇較優(yōu)執(zhí)行計劃的目標函數(shù),此時,M中任意查詢qi的QI 狀態(tài)為。其中,Rqjk/M′表示目標查詢qj以執(zhí)行計劃k加入到組合M′后的QueryMixRating;Rqm/M-qm表示原查詢組合M′中的查詢qm在M中的QueryMixRating。
為了能夠更準確地擬合QI,考慮到其復雜性,本文采用深度學習模型度量QI,嘗試擬合查詢執(zhí)行計劃特征與QI特征參數(shù)的變化量之間的復雜函數(shù)關系。
(1)模型的選擇
查詢組合的執(zhí)行計劃(查詢組合中的所有查詢執(zhí)行計劃的集合)不僅體現(xiàn)了查詢自身的執(zhí)行特征,也蘊含了查詢組合的交互特性??紤]到查詢執(zhí)行計劃的操作具有時序性,QI 隨著查詢組合的執(zhí)行計劃中操作的時序而改變,本文構造Bi-LSTM 模型擬合執(zhí)行計劃操作的交互與特征參數(shù)變化量之間的復雜函數(shù)關系,度量QI,其包含兩個LSTM 單元分別從前向、后向提取相鄰操作的相關性。Bi-LSTM的結構如圖1所示,圖中兩個虛線框分別表示兩個LSTM 單元。每個LSTM 單元包括三個門結構,使信息選擇性通過,實現(xiàn)信息的保留或丟棄。LSTM 結構的細節(jié)如下[20]:ct是LSTM 當前對信息的記憶狀態(tài),W和b分別是權重系數(shù)和偏置系數(shù);x是輸入,h是輸出,t表示當前時刻。?表示對應元素相乘運算,⊕表示加法運算。
圖1 Bi-LSTM的結構Fig.1 Structure of Bi-LSTM
其中,遺忘門ft是LSTM 結構的第一個門,計算公式如下:
使用遺忘門得到經過遺忘處理后的信息。輸入門是LSTM 的第二個門,用于決定保留的信息,計算公式如下:
其中,it是決定更新的信息,c~t是備選更新的信息,二者通過計算得到新的狀態(tài):
其中,fc·ct-1是丟棄信息的操作,it·c~t是保留信息的操作。輸出門是LSTM結構的第三個門,計算:
得到ht作為輸出,ct為當前狀態(tài)作為下一時刻遺忘門的輸入,循環(huán)往復。
特別地,考慮到查詢執(zhí)行計劃中前驅操作的結果往往被用于后繼操作,后繼操作的類型常常與前驅操作類型相關聯(lián),因此,采用Bi-LSTM網(wǎng)絡從兩個方向分別學習執(zhí)行計劃操作序列中操作類型與操作結果之間的相關特征。在Bi-LSTM中,從前向后執(zhí)行運算的LSTM單元在每一步計算時,其輸入門和遺忘門分別參與對前驅操作特征的選擇性記憶和遺忘;從后向前執(zhí)行運算的LSTM單元在每一步計算時,對后繼操作的特征進行選擇性記憶和遺忘。這種雙向提取的序列特征比單向提取的序列特征能更充分地表達序列中復雜的QI 特性,在把獲得估算的QI特征參數(shù)的變化量作為最終輸出Y時,能夠實現(xiàn)更準確的并行查詢交互的度量。在訓練階段,為了擬合FEP到QI特征參數(shù)的映射關系,模型需要根據(jù)誤差動態(tài)地調整龐大的參數(shù)矩陣,花費的時間較長;在預測階段,模型對輸入的特征向量和參數(shù)矩陣只進行一次運算,故能快速得出QI 特征參數(shù)變化量的預測值。查詢執(zhí)行計劃可以表示為非完全二叉樹[8]。例如,關系T1包含字段c1、c2,T2包含字段c3,T2的字段c3上存在索引,則查詢“SELECTT1.c1FROMT1,T2WHERET1.c2=T2.c3GROUP BYT1.c1”的執(zhí)行計劃樹如圖2所示。
圖2 查詢示例的執(zhí)行計劃樹Fig.2 Execution plan tree of example query
在執(zhí)行計劃樹中,子節(jié)點的操作順序先于父節(jié)點,因此,本文通過后序遍歷可得到該執(zhí)行計劃的一個可能的操作序列為{SeqScan,IndexOnlyScan,Hash,Hash-Join,HashAggregate,Sort,GatherMerge},對每個操作編碼,生成該查詢的執(zhí)行計劃特征。在查詢執(zhí)行過程中,執(zhí)行計劃樹中兄弟節(jié)點執(zhí)行的先后順序是可變的,Bi-LSTM 能夠從兩個方向提取由于這種執(zhí)行順序不同引起的QI 的不同。目標查詢加入查詢組合的時刻不同,并行查詢操作序列節(jié)點之間的對位也不同,Bi-LSTM從兩個方向提取由于這種對位不同引起的QI的不同。這些不同體現(xiàn)在多個方面,本文選擇體現(xiàn)CPU、I/O和緩沖區(qū)使用情況的三個最為顯著的參數(shù)、細粒度地捕捉上述情況下的QI。
(2)模型的輸入
按照上面的討論,MMQI模型的輸入為查詢組合的執(zhí)行計劃特征。下面討論如何從查詢執(zhí)行計劃提取特征,并對其編碼,以及采用何種組合方式形成查詢組合執(zhí)行計劃特征。
對于單個查詢FEP 的提取,可以遍歷查詢執(zhí)行計劃樹,獲取查詢執(zhí)行的操作序列,抽取它的特征。通過后序遍歷查詢組合中每個查詢的查詢執(zhí)行計劃,獲取到查詢組合的FEP 作為模型的輸入。考慮到查詢執(zhí)行計劃有多個操作,每一個操作具有不同的特性,對每一個操作按照操作類型、操作的關系、操作涉及關系的字段、結果行寬度進行獨熱(one-hot)編碼,映射到向量v={v0,v1,v2,v3}[18]。
查詢組合的執(zhí)行計劃特征是查詢組合中所有查詢執(zhí)行計劃特征的組合,本文將查詢組合中所有查詢的執(zhí)行計劃特征拼接,生成查詢組合的執(zhí)行計劃特征。按照上述方法,將查詢組合M={M′,qjk}中的每一個執(zhí)行計劃特征進行編碼,拼接成查詢組合的計劃特征:
作為MMQI模型的輸入。其中q1,q2,…,qn表示原查詢組合中每個查詢的執(zhí)行計劃特征,qjk表示目標查詢的執(zhí)行計劃特征。
(3)模型的輸出
借鑒QueryRating[5]的計算方式,定義查詢的平均執(zhí)行時間、平均I/O 時間和平均緩沖區(qū)命中率在并行與單獨執(zhí)行時的比值來反映QI,結合QueryMixRating 體現(xiàn)并行場景下查詢的交互特征,作為MMQI 模型的輸出。從候選執(zhí)行計劃集合Q={qjk|k=1,2,…}為目標查詢qj選擇執(zhí)行計劃k時,模型的輸出為:
其中,yik對應查詢qi的輸出,Rqi/M-qi表示查詢qi在當前查詢組合M中平均響應時間的變化量,即QueryMixRating;表示查詢qi平均執(zhí)行時間的變化量;表示查詢qi平均I/O 時間的變化量;表示查詢qi平均緩沖區(qū)命中率的變化量。
為了盡量涵蓋QI 對執(zhí)行計劃選擇的影響,本文采用深度學習模型充分考慮并行查詢執(zhí)行計劃與QI的特征,為查詢動態(tài)地選擇較優(yōu)執(zhí)行計劃。
(1)模型的選擇
將FCP納入選擇執(zhí)行計劃模型的輸入,使EPS模型擬合并行場景下目標查詢的FCP 與較優(yōu)執(zhí)行計劃的復雜函數(shù)關系。為了避免特征梯度消失的問題,選擇LSTM作為模型的一部分,采用全連接層融合LSTM層輸出的信息,為查詢選擇較優(yōu)執(zhí)行計劃。為每個目標查詢設計3 種候選執(zhí)行計劃,即k=3,模型的結構如圖3所示。
圖3 選擇執(zhí)行計劃模型的結構Fig.3 Structure of model for selecting execution plan
將MMQI 模型估算的QI 特征參數(shù)變化量按照最大值劃分區(qū)間編碼,生成FQI,與候選執(zhí)行計劃FCP合并共同作為全連接層的輸入,為查詢選擇較優(yōu)執(zhí)行計劃。
(2)模型的輸入
設計FCP為目標查詢在查詢組合M下的所有執(zhí)行計劃特征的后序編碼:
作為EPS模型輸入特征的一部分。特別地,當目標查詢選擇每個候選執(zhí)行計劃時,將MMQI模型輸出查詢組合的平均響應時間、平均執(zhí)行時間、平均I/O 時間、平均緩沖區(qū)命中率的變化量組合起來,作為M={M′,qjk}下的查詢交互特征:
按最大值劃分區(qū)間進行獨熱編碼,與FCP拼接生成:
作為EPS模型的輸入。
(3)模型的輸出
為目標查詢qj選擇較優(yōu)執(zhí)行計劃,設計EPS 模型的標簽。模型的標簽:
每一位對應qj的查詢交互特征FQI 與候選執(zhí)行計劃FCP。在訓練時,根據(jù)目標函數(shù)指定的較優(yōu)執(zhí)行計劃的對應位為1,其余位為0;在預測時,選擇L中最大值所在位對應的執(zhí)行計劃為目標查詢qj的較優(yōu)執(zhí)行計劃。
本章通過實驗驗證MMQI 模型和EPS 模型的可行性。實驗采用TPC-H[21]測試基準的查詢模板Q3、Q4、Q7、Q10、Q14、Q22,為它們選擇執(zhí)行計劃進行驗證。
(1)實驗環(huán)境
實驗所用的服務器為Intel?Xeon?CPU E5-2609 v4@1.70 GHz,RAM 為16.0 GB,NVDIA GeForce GPU GTX1660Ti 6 GB,操作系統(tǒng)為CentOS Linux release 7.3.1611(Core),編程語言為Java 和Python,數(shù)據(jù)庫為PostgreSQL13.0(shared Buffer=4 096 MB),測試基準為TPC-H 2.18(SF=10)。
(2)執(zhí)行計劃的獲取
用PostgreSQL 中的pg_hint_plan 插件,通過hint 提示為查詢指定代價相差不大的執(zhí)行計劃,用explain 關鍵字獲取查詢的執(zhí)行計劃,通過修改表的連接方式、指定索引等方法為查詢指定不同的執(zhí)行計劃。為了準確刻畫一個查詢真正的執(zhí)行代價,本文為每個查詢模板指定3 種候選執(zhí)行計劃,這3 種候選執(zhí)行計劃的確定考慮到以下三個方面:查詢優(yōu)化器生成的候選執(zhí)行計劃的數(shù)量非常龐大,因此本文希望一個候選執(zhí)行計劃能夠代表一類代價相近的執(zhí)行計劃,通過不同的執(zhí)行計劃將查詢可能的執(zhí)行時間劃分成不同的區(qū)間;設計2個候選執(zhí)行計劃導致對查詢執(zhí)行代價的劃分過于粗糙,50%的隨機正確率會造成較多的假陽性數(shù)據(jù),干擾對模型的驗證;設計4個及以上的候選執(zhí)行計劃對簡單查詢來說,會造成它們的執(zhí)行代價范圍的“重疊”。
(3)QI特征參數(shù)的獲取
為了計算四種QI 特征參數(shù)的變化量,需要獲取查詢組合運行的原始系統(tǒng)參數(shù)。PostgreSQL 的系統(tǒng)視圖pg_stat_statements(https://www.postgresql.org/docs/13/pgstatstatements.html)提供查詢反映QI狀態(tài)的字段。獲取讀取的共享塊數(shù)(shared_blks_read)、命中的共享塊數(shù)(shared_blks_hit)和執(zhí)行次數(shù)(calls)字段,用公式(17)計算平均緩沖區(qū)命中率:
平均執(zhí)行時間(mean_exec_time)字段直接使用;獲取塊讀取時間(blk_read_time)和塊寫入時間(blk_write_time)字段,用公式(18)計算平均I/O時間。
在實驗前清空pg_stat_statements視圖,并隨機執(zhí)行若干查詢以預熱緩沖區(qū)。
(4)數(shù)據(jù)集的生成
本文將TPC-H的6個模板作為目標查詢,為每一個查詢指定3 個候選執(zhí)行計劃。將同一查詢的不同執(zhí)行計劃看作不同的查詢,與相同標準下定義的73 個查詢自由組合,當MPL=n時,生成3C16C7n3-1個樣本作為MMQI 的 輸 入。PostgreSQL 共 有34 種 操 作 類 型,在TPC-H 中有8 張表、61 個字段。實驗發(fā)現(xiàn),當結果行寬度設置最大為20 時,可以包含所有的查詢結果行寬度。單個查詢的最大操作數(shù)為25,因此,編碼一個查詢執(zhí)行計劃的特征向量為(34+8+61+20)×25=3 075位,一個查詢組合的FEP 維數(shù)為3 075n。采用3.1 節(jié)(3)的方法,計算查詢組合中每個查詢4種QI特征參數(shù)的變化量作為輸出,用于訓練MMQI模型。
讀取MMQI 模型估算的QI 特征參數(shù)的變化量,并按照最大值175劃分區(qū)間獨熱編碼,結合FCP作為選擇執(zhí)行計劃模型的輸入。因此,編碼一個查詢組合中四種QI 特征參數(shù)的變化量維數(shù)為175×4n=700n。目標查詢選擇三種不同執(zhí)行計劃時該組合的FQI 維度共計3×700n,此時EPS模型的輸入樣本數(shù)為C16C7n3-1。同理,將三種候選執(zhí)行計劃編碼,獲得FCP 的維數(shù)為3 075×3=9 225。故EPS模型的輸入特征維度為3×(3 075+700n)。
(5)模型的參數(shù)調優(yōu)與訓練
用兩層LSTM層作為Bi-LSTM層,每層LSTM單元設置為64,輸出結果整合方式為拼接(concat)。全連接層單元個數(shù)為2n。最后一層單元數(shù)為3,采用softmax激活函數(shù)實現(xiàn)多分類任務。全連接層適當采用l1正則化,添加dropout 層,選擇失活比率0.2 以防止模型過擬合。模型的優(yōu)化器采用Adam,學習率為0.001。MMQI模型和EPS 模型的損失函數(shù)分別為mse 和categorical_crossentropy。
將數(shù)據(jù)集按照4∶1 劃分訓練集和測試集。首先訓練MMQI 模型,從MMQI 模型中獲得估算的QI 特征參數(shù)的變化量后,利用其輸出構造FQI,編碼后融合FCP,結合標簽訓練EPS模型。
(1)與TRating[6]、查詢優(yōu)化器的對比
實驗在MPL=2,3,4,5 時,為新進入的查詢選擇較優(yōu)執(zhí)行計劃。MMQI-EPS 與TRating、查詢優(yōu)化器選擇較優(yōu)執(zhí)行計劃的準確率對比如圖4 所示。同一實驗場景下,MMQI-EPS 選擇較優(yōu)執(zhí)行計劃的準確率相對于TRating平均提高15.1個百分點。這是因為:TRating模型僅通過查詢的響應時間建模,未考慮到QI 的多個維度;分析模型對QI 的擬合能力有限。不同MPL 下,MMQI-EPS 均優(yōu)于TRating,說明本文合理地選取了QI特征參數(shù),對QI的度量更具體,為選擇執(zhí)行計劃模型提供了可靠的輸入。TRating較查詢優(yōu)化器提升23.5個百分點,是因為TRating 考慮了QI,說明QI 是選擇較優(yōu)執(zhí)行計劃時不可忽略的依據(jù)。
圖4 與TRating、查詢優(yōu)化器的準確率對比Fig.4 Comparison of accuracy with TRating and optimizer
在MPL=2,3,4,5 時,模型比查詢優(yōu)化器的平均準確率高(31.2+36.4+44.5+46.1)/4=38.6 個百分點。隨著MPL 增大,查詢優(yōu)化器對較優(yōu)執(zhí)行計劃的判斷能力大幅降低,這是因為查詢優(yōu)化器僅依據(jù)并行度、數(shù)據(jù)分布、緩沖區(qū)大小、單個執(zhí)行計劃代價等靜態(tài)參數(shù)為并行查詢選擇較優(yōu)執(zhí)行計劃,不能考慮復雜多變的QI。當MPL=5 時,查詢優(yōu)化器的準確率接近33%,說明在復雜的QI場景下,查詢優(yōu)化器選擇執(zhí)行計劃的方法近似于隨機選擇。MMQI-EPS的準確率比查詢優(yōu)化器有大幅提升,說明模型充分地考慮了QI 這一重要因素,為并行查詢選擇較優(yōu)執(zhí)行計劃。
(2)模型的性能
在MPL=3時,按照Q22、Q14、Q10、Q7、Q4、Q3的順序執(zhí)行6 個查詢3 次,記錄總的執(zhí)行時間。用查詢優(yōu)化器和MMQI-EPS為查詢選擇較優(yōu)執(zhí)行計劃的情況下,總執(zhí)行時間分別為626.29 s 和563.45 s,MMQI-EPS 的用時較查詢優(yōu)化器下降了10 個百分點。這是因為:查詢優(yōu)化器對QI 的考慮有限,選擇的執(zhí)行計劃并不是合適的,導致總執(zhí)行時間較長;而MMQI-EPS 充分地考慮了QI的影響,為查詢選擇了較優(yōu)執(zhí)行計劃,使總執(zhí)行時間縮短。表3為查詢第二次執(zhí)行時,MMQI-EPS選擇的較優(yōu)執(zhí)行計劃,前五個查詢的執(zhí)行計劃不同于查詢優(yōu)化器選擇的DEFAULT執(zhí)行計劃。
表3 模型選擇的較優(yōu)執(zhí)行計劃Table 3 Better execution plans selected by model
模型選擇的較優(yōu)執(zhí)行計劃與查詢優(yōu)化器不同,引起了總執(zhí)行時間的縮短,這說明MMQI-EPS可以更靈活地為并行查詢選擇較優(yōu)執(zhí)行計劃。模型為Q22 選擇的較優(yōu)執(zhí)行計劃和查詢優(yōu)化器相同,是默認執(zhí)行計劃;為Q3、Q4、Q10、Q14 選擇采用索引掃描的執(zhí)行計劃,提高了檢索速度;為Q7 選擇關閉MergeJoin 的執(zhí)行計劃,使DBMS 采用HashJoin 操作,減少了排序量。由此可知,MMQI-EPS 選擇較優(yōu)執(zhí)行計劃的方法提高了并行查詢的執(zhí)行效率。
(3)并行度對模型準確率的影響
在不同并行度下,MMQI-EPS選擇較優(yōu)執(zhí)行計劃的準確率對比如表4所示。
表4 不同并行度下準確率對比Table 4 Comparison of accuracy under different MPL
由表4 可知,隨著MPL 的增大,MMQI-EPS 的準確率分別下降5.8、4.9、3.4 個百分點。這是因為:QI 的復雜程度愈高,對執(zhí)行計劃的代價改變愈大,使選擇較優(yōu)執(zhí)行計劃的難度增加;當MPL繼續(xù)增加時,MMQI-EPS的準確率略有下降但保持穩(wěn)定。
(4)數(shù)據(jù)集大小對模型準確率的影響
在不同的數(shù)據(jù)集大小下,MMQI-EPS選擇較優(yōu)執(zhí)行計劃的準確率如表5所示。本文分別指定2 000、4 000、6 000和7 000個樣本進行訓練。
表5 不同數(shù)據(jù)集大小下的平均準確率Table 5 Mean accuracy in different size of dataset
由表5 可知,隨著訓練樣本數(shù)增加,MMQI-EPS 模型的平均準確率逐漸提升。當樣本數(shù)超過6 000 時,模型準確率的提升隨樣本數(shù)的增加緩慢。當樣本數(shù)為7 000 時,模型的準確率比6 000 提升0.8 個百分點。采集查詢的原始系統(tǒng)參數(shù)需要完整的執(zhí)行查詢,耗費大量的時間,因此,綜合考慮模型的準確率和數(shù)據(jù)收集成本,本文選擇6 000個樣本作為實驗的數(shù)據(jù)集。
(5)模型的時間復雜性
在本文的實驗環(huán)境下,從開始訓練到模型收斂時,MMQI-EPS兩部分的訓練時間和總訓練時間如表6所示。
表6 MMQI-EPS的訓練時間Table 6 Training time of MMQI-EPS
分析表6 可知,隨著MPL 的增加,MMQI 和EPS 模型的訓練時間均有所增加。當MPL=n時,按照3.1節(jié)(4)的方法,模型輸入和輸出的維度與MPL 直接相關。隨著MPL 增加,MMQI 的訓練時間分別增加33.09 s、49.78 s、74.81 s,這是因為MMQI 模型的輸入和輸出維度均受MPL的影響,MPL增大時,模型的輸入特征FEP增大,需要回歸預測的QI特征參數(shù)的變化量增多;QI的復雜性不隨MPL 的增加而線性增大,模型擬合逐漸復雜多變的QI需要更大的計算量。EPS模型的輸入特征維度比MMQI大,但是訓練時間較短,分析認為:EPS模型解決的是簡單的分類問題,其輸出是固定的3 維標簽;目標查詢qj不變時,F(xiàn)CP不會改變,模型的輸入特征受到MPL 的改變時僅體現(xiàn)在FQI 的維度上,易于模型的訓練。
為了驗證模型選擇執(zhí)行計劃的效率,本文使用pg_stat_statements視圖的字段mean_plan_time獲取查詢優(yōu)化器的平均計劃時間,與MMQI-EPS預測查詢較優(yōu)執(zhí)行計劃的時間進行對比。表7是本文選取的6個查詢模板在MPL=2,3,4,5 時,MMQI-EPS 與查詢優(yōu)化器的選擇執(zhí)行計劃的平均時間差。
表7 查詢優(yōu)化器與MMQI-EPS選擇執(zhí)行計劃的時間差Table 7 Time difference between optimizer and MMQI-EPS in selecting execution plan
在本文的實驗環(huán)境下,僅在預測階段,MMQI-EPS選擇單個執(zhí)行計劃的時間小于2 ms,而查詢優(yōu)化器選擇較優(yōu)執(zhí)行計劃的時間在10~100 ms 之間,遠大于模型。這是因為查詢優(yōu)化器選擇較優(yōu)執(zhí)行計劃的兩個層次需要生成查詢執(zhí)行計劃,再根據(jù)各種系統(tǒng)靜態(tài)配置綜合地給出較優(yōu)執(zhí)行計劃;而MMQI-EPS模型只需要根據(jù)輸入向量與訓練好的參數(shù)矩陣進行線性運算,運算速度較快。但是,在執(zhí)行預測之前,加載MMQI-EPS 兩部分模型的平均時間分別為6.67 s和4.69 s,因此模型只適合一次性加載到內存、批量地為查詢生成較優(yōu)執(zhí)行計劃的場景,不適合間斷性地選擇較優(yōu)執(zhí)行計劃。
(6)與LSTM-FCN[19]的對比
在本文的實驗環(huán)境下,使用公式(3)作為目標函數(shù)時,MMQI-EPS 和LSTM-FCN 選擇較優(yōu)執(zhí)行計劃的準確率和訓練耗時對比如圖5所示。
圖5 不同并行度下MMQI-EPS和LSTM-FCN對比Fig.5 Comparison of MMQI-EPS and LSTM-FCN under different MPL
MPL<4 時,LSTM-FCN 選擇較優(yōu)執(zhí)行計劃的準確率優(yōu)于MMQI-EPS;MPL≥4時,MMQI-EPS優(yōu)于LSTMFCN;LSTM-FCN 的準確率隨并行度的增加下降較快。LSTM-FCN 將目標查詢與組合中剩余各查詢并行時的QueryRating[5]作為FQI,對QI 的描述是粗粒度的,在MPL 較低時,QI 復雜度不高,能夠達到較高的準確率。在MPL 增大時,QI 變得復雜,需要細粒度的描述,LSTM-FCN的單向性和QueryRating的粗粒度導致其預測精度降低,而MMQI-EPS 多參數(shù)細粒度地度量QI 引起每個查詢感知到系統(tǒng)在CPU、I/O 和緩沖區(qū)資源的變化,通過Bi-LSTM 更充分地度量QI。LSTM-FCN 為目標查詢選擇不同執(zhí)行計劃時,將剩余查詢的特征納入選擇計劃模型的輸入,造成冗余,削弱了模型在MPL較大時對不同執(zhí)行計劃的區(qū)分能力。
在時間復雜性方面,由于MMQI-EPS通過回歸預測QI 特征參數(shù)的變化量來度量QI,再結合FCP 選擇較優(yōu)執(zhí)行計劃,其訓練時間較長;在預測時,LSTM-FCN 和MMQI-EPS預測較優(yōu)執(zhí)行計劃的耗時接近。
查詢是DBMS的主要負載,為查詢選擇合適的執(zhí)行計劃是提高系統(tǒng)性能的關鍵。當查詢交互存在時,查詢優(yōu)化器面臨代價估計、選擇執(zhí)行計劃不準確的問題,而采用簡單分析模型度量查詢交互較為困難。鑒于此,本文合理地考查特定的QI 特征參數(shù),創(chuàng)新性地提出使用MMQI-EPS模型度量查詢交互,為并行查詢選擇較優(yōu)執(zhí)行計劃,并通過實驗驗證了其合理性,具有一定的現(xiàn)實意義。當查詢執(zhí)行場景更加復雜時,如何從其他多個維度更準確地度量查詢交互,保持模型預測的準確率,或建立圖神經網(wǎng)絡模型值得本課題繼續(xù)探索。