Self-Driving Database Management Systems
- MySummary
ABSTRACT
之前的advisory tools來(lái)幫助DBA處理系統(tǒng)調(diào)優(yōu)和物理設(shè)計(jì)的各個(gè)方面,都仍然需要人類對(duì)數(shù)據(jù)庫(kù)的任何更改做出最終決定,并且是在問(wèn)題發(fā)生后修復(fù)問(wèn)題的反動(dòng)措施reactionary measures 。
An truly “self-driving” database management system (DBMS)是針對(duì)autonomous operation(自主操作)設(shè)計(jì)的全新架構(gòu)。系統(tǒng)的所有方面都是由一個(gè)integrated planning componen綜合規(guī)劃組件來(lái)控制。該組件不僅針對(duì)當(dāng)前的工作負(fù)載優(yōu)化系統(tǒng),而且還預(yù)測(cè)未來(lái)的工作負(fù)載趨勢(shì),以便系統(tǒng)可以相應(yīng)地做好準(zhǔn)備。這樣,DBMS就可以支持所有以前的調(diào)優(yōu)技術(shù),而不需要人工確定部署它們的正確方式和適當(dāng)時(shí)間。
本文介紹了第一個(gè)自驅(qū)動(dòng)DBMS Peloton的體系結(jié)構(gòu)。由于深度學(xué)習(xí)算法的進(jìn)步,以及硬件和自適應(yīng)數(shù)據(jù)庫(kù)架構(gòu)的改進(jìn),Peloton的自主能力現(xiàn)在成為可能。
1. INTRODUCTION
其實(shí)SQL也是這種思路,關(guān)系模型和聲明性查詢語(yǔ)言就是使用DBMS來(lái)消除數(shù)據(jù)管理負(fù)擔(dān)的想法。使用現(xiàn)有的自動(dòng)調(diào)優(yōu)工具是一項(xiàng)繁重的任務(wù),因?yàn)樗鼈冃枰M(fèi)力地準(zhǔn)備工作負(fù)載樣本、分出一些硬件來(lái)測(cè)試提議的更新,最重要的是要放到DBMS的內(nèi)部構(gòu)件。如果DBMS可以自動(dòng)做這些事情,那么它將消除掉調(diào)優(yōu)過(guò)程中部署數(shù)據(jù)庫(kù)所涉及的許多代價(jià)和成本。
以前的許多self-tuning系統(tǒng)工作都集中在僅針對(duì)數(shù)據(jù)庫(kù)的單個(gè)方面的工具上,例如,一些工具能夠選擇數(shù)據(jù)庫(kù)的最佳邏輯或物理設(shè)計(jì),主要是索引、分區(qū)方案、數(shù)據(jù)組織、物化視圖。其他工具能夠?yàn)閼?yīng)用程序選擇調(diào)優(yōu)參數(shù)。這些工具中的大多數(shù)都以相同的方式操作:DBA提供樣本數(shù)據(jù)庫(kù)和工作負(fù)載Track,以指導(dǎo)搜索找到最佳或接近最優(yōu)的配置?;谠频南到y(tǒng)在service-level使用動(dòng)態(tài)資源分配,但不調(diào)整單個(gè)數(shù)據(jù)庫(kù)。
這些都不足以實(shí)現(xiàn)完全自主的系統(tǒng),因?yàn)?1) external to the DBMS, (2) reactionary,(3) 無(wú)法一次考慮多個(gè)問(wèn)題的整體視圖。即:他們從系統(tǒng)外部觀察 DBMS 的行為,并建議 DBA 如何進(jìn)行修復(fù)已經(jīng)發(fā)生的問(wèn)題。Tunning tool是假設(shè)DBA能夠在一個(gè)影響數(shù)據(jù)庫(kù)性能的最小窗口來(lái)更新DBMS。但是現(xiàn)在DBMS非常復(fù)雜,所以如果有工具是自動(dòng)化的,這樣它們就可以單獨(dú)部署優(yōu)化。
在本文中,我們證明自動(dòng)駕駛數(shù)據(jù)庫(kù)系統(tǒng)現(xiàn)在是可以實(shí)現(xiàn)的。我們首先討論使用這種系統(tǒng)的主要挑戰(zhàn)。然后我們介紹了Peloton的架構(gòu),這是第一個(gè)為自主操作而設(shè)計(jì)的DBMS。我們總結(jié)了使用Peloton的集成深度學(xué)習(xí)框架進(jìn)行工作量預(yù)測(cè)和行動(dòng)部署的一些初步結(jié)果。
2. PROBLEM OVERVIEW
SFDB的第一個(gè)挑戰(zhàn)是理解應(yīng)用程序的工作負(fù)載。最基本的級(jí)別是將查詢分類為 OLTP 或 OLAP。如果DBMS確定了應(yīng)用程序?qū)儆谶@兩個(gè)工作負(fù)載類中的哪一個(gè),那么它就可以決定如何優(yōu)化數(shù)據(jù)庫(kù)。例如,如果是OLTP,那么DBMS應(yīng)該將元組存儲(chǔ)在面向行的布局中,該布局針對(duì)寫(xiě)進(jìn)行了優(yōu)化。如果是OLAP,那么DBMS應(yīng)該使用面向列的布局,這種布局更適合訪問(wèn)表列子集的只讀查詢。最好是支持混合HTAP工作負(fù)載的單個(gè)DBMS。這樣的系統(tǒng)會(huì)自動(dòng)為不同的數(shù)據(jù)庫(kù)段選擇適當(dāng)?shù)腛LTP或OLAP優(yōu)化。
DBMS還需要預(yù)測(cè)資源利用趨勢(shì)。要求它能夠預(yù)測(cè)未來(lái)的需求,并在對(duì)性能影響最小的時(shí)候部署優(yōu)化。不可否認(rèn),有一些工作負(fù)載異常是DBMS永遠(yuǎn)無(wú)法預(yù)料的(例如,“viral”content)。但是這些模型(self-driving?)提供了早期預(yù)警,使DBMS能夠比外部監(jiān)控系統(tǒng)更快地制定緩解措施。
有了這些預(yù)測(cè)模型,DBMS就可以識(shí)別出針對(duì)預(yù)期工作負(fù)載調(diào)優(yōu)和優(yōu)化數(shù)據(jù)庫(kù)的潛在actions。
最好是不能支持需要系統(tǒng)外部信息的DBA任務(wù),例如權(quán)限、數(shù)據(jù)清理和版本控制。主要支持上面的三種優(yōu)化,數(shù)據(jù)庫(kù)的物理設(shè)計(jì)、數(shù)據(jù)組織的變化、DBMS的runtime行為。對(duì)于每個(gè)優(yōu)化操作,DBMS都需要估計(jì)它們對(duì)數(shù)據(jù)庫(kù)的潛在影響。這些估計(jì)不僅包括操作部署后將消耗的資源,還包括DBMS將用于部署操作的資源。
還有一個(gè)挑戰(zhàn)是:DBMS如何有效應(yīng)用這些優(yōu)化,不導(dǎo)致性能大幅下降,可以使系統(tǒng)快速適應(yīng)變化。需要的是一個(gè)靈活的內(nèi)存中的DBMS體系結(jié)構(gòu),它可以在部署過(guò)程中增量地應(yīng)用優(yōu)化,而不會(huì)對(duì)應(yīng)用程序產(chǎn)生明顯的影響。
最后,autonomous DBMS有兩個(gè)附加的約束:1. 不能要求需要重構(gòu)代碼。2. 要求是它不能依賴于只支持特定編程環(huán)境的程序分析工具。確保普適性。
3. SELF-DRIVING ARCHITECTURE
現(xiàn)有的dbms對(duì)于自治操作來(lái)說(shuō)過(guò)于笨拙,因?yàn)樵谶M(jìn)行更改時(shí)通常需要重新啟動(dòng)它們,而且表1中的許多操作太慢。因此,一個(gè)新的DBMS的體系結(jié)構(gòu)是最好的,因?yàn)榧傻膕elf-driving 的 component能對(duì)系統(tǒng)更全面和細(xì)粒度的控制。
CMU自己的Peloton,使用的是MVCC的變種,另一個(gè)優(yōu)點(diǎn)是它使用內(nèi)存存儲(chǔ)管理器,具有無(wú)鎖的數(shù)據(jù)結(jié)構(gòu)和靈活的布局,可以快速執(zhí)行HTAP工作負(fù)載。
除了環(huán)境設(shè)置(例如內(nèi)存閾值,目錄路徑)等,目標(biāo)是Peloton在沒(méi)有任何人為提供的指導(dǎo)信息的情況下有效地運(yùn)行。系統(tǒng)自動(dòng)學(xué)習(xí)如何改善應(yīng)用程序查詢和事務(wù)的延遲,這里假設(shè)系統(tǒng)延遲是最主要的優(yōu)化目標(biāo),分布式下可以加service costs and energy來(lái)作為優(yōu)化目標(biāo)。
Peloton包含一個(gè)嵌入式的monitor,來(lái)follow系統(tǒng)的每條查詢過(guò)程的數(shù)據(jù)流,包括監(jiān)控資源利用率,會(huì)周期性地用(1)DBMS/OS檢測(cè)道德數(shù)據(jù)和(2)開(kāi)始/結(jié)束事件進(jìn)行優(yōu)化操作。DBMS根據(jù)這些監(jiān)視數(shù)據(jù)為應(yīng)用程序的預(yù)期工作負(fù)載構(gòu)建預(yù)測(cè)模型。它使用這些模型來(lái)識(shí)別瓶頸和其他問(wèn)題(例如,缺少索引、節(jié)點(diǎn)過(guò)載),然后選擇最佳操作。系統(tǒng)在執(zhí)行此操作的同時(shí)仍然處理應(yīng)用程序的常規(guī)工作負(fù)載,并收集新的監(jiān)視數(shù)據(jù),以了解這些操作如何影響其性能。
3.1 Workload Classification
第一個(gè)組件是DBMS對(duì)工作負(fù)載進(jìn)行聚類,使用無(wú)監(jiān)督學(xué)習(xí)方法對(duì)具有相似特征的負(fù)載查詢進(jìn)行分組。聚類可以減少DBMS維護(hù)的預(yù)測(cè)模型的數(shù)量,從而使預(yù)測(cè)應(yīng)用程序的行為變得更容易。Peloton的初始實(shí)現(xiàn)使用DBSCAN算法。這種方法已被用于聚類靜態(tài)OLTP工作負(fù)載。
重點(diǎn)是使用查詢的什么features來(lái)作為聚類的依據(jù),主要有兩大類features (1) 查詢的運(yùn)行時(shí)度量 (2) 查詢的邏輯語(yǔ)義。雖然前者使DBMS能夠在不了解其含義的情況下更好地聚類類似查詢,但它們其實(shí)是對(duì)數(shù)據(jù)庫(kù)內(nèi)容或其物理設(shè)計(jì)的變化更敏感。另一種方法是根據(jù)邏輯執(zhí)行計(jì)劃的結(jié)構(gòu)(例如,表、謂詞)對(duì)查詢進(jìn)行分類。這些特性獨(dú)立于數(shù)據(jù)庫(kù)的內(nèi)容及其物理設(shè)計(jì)。但是這種特征能否產(chǎn)生了能夠生成良好預(yù)測(cè)模型的聚類以及使用runtime時(shí)候的指標(biāo),要經(jīng)常重新訓(xùn)練是否代價(jià)太高?結(jié)果可能是runtime metrics使系統(tǒng)能夠在更短的時(shí)間內(nèi)收斂到穩(wěn)定狀態(tài),因此系統(tǒng)不必經(jīng)常重新訓(xùn)練其預(yù)測(cè)模型。或者,即使集群經(jīng)常變化,硬件加速訓(xùn)練也可以使系統(tǒng)以最小的開(kāi)銷快速重建其模型。
下一個(gè)問(wèn)題是:如何確定聚類何時(shí)不再正確?Peloton使用標(biāo)準(zhǔn)的交叉驗(yàn)證技術(shù)來(lái)確定集群的錯(cuò)誤率何時(shí)超過(guò)閾值。當(dāng)超過(guò)閾值的時(shí)候,DBMS必須重新構(gòu)建它的聚類,會(huì)shuffle groups并且可能會(huì)需要重新訓(xùn)練之前的預(yù)測(cè)模型(因?yàn)橄喈?dāng)于訓(xùn)練集變了)。此外,DBMS還可以利用actions對(duì)查詢的影響來(lái)決定何時(shí)重建集群。
3.2 Workload Forecasting
下一個(gè)主要任務(wù)就是工作負(fù)載的預(yù)測(cè)模型訓(xùn)練,來(lái)預(yù)測(cè)每個(gè)workload的到達(dá)率(判斷接下來(lái)是什么樣的負(fù)載 來(lái)提前調(diào)整DB來(lái)適應(yīng)),除了異常熱點(diǎn)之外,這種預(yù)測(cè)使系統(tǒng)能夠識(shí)別工作負(fù)載的周期性和數(shù)據(jù)增長(zhǎng)趨勢(shì),從而為負(fù)載波動(dòng)做好準(zhǔn)備。在DBMS執(zhí)行一個(gè)查詢之后,tag每個(gè)query一個(gè)聚類標(biāo)簽然后填到相應(yīng)的直方圖中(收集數(shù)據(jù)),該直方圖跟蹤在一段時(shí)間內(nèi)到達(dá)每個(gè)聚簇的查詢數(shù)量。然后Peloton使用這些數(shù)據(jù)來(lái)訓(xùn)練預(yù)測(cè)模型,以估計(jì)app接下來(lái)要執(zhí)行的每個(gè)類的查詢數(shù)量。
之前有一些用ARMA模型來(lái)預(yù)測(cè)的 云場(chǎng)景下 web 服務(wù)的負(fù)載變化,ARMA可以捕獲時(shí)間序列數(shù)據(jù)中的線性關(guān)系,缺點(diǎn)是1. 在使用自回歸移動(dòng)平均(ARMA)模型時(shí),通常需要人類專家來(lái)決定兩個(gè)關(guān)鍵參數(shù):差分順序和模型中的項(xiàng)數(shù)。差分順序是指在數(shù)據(jù)預(yù)處理階段,為了使時(shí)間序列數(shù)據(jù)穩(wěn)定,需要進(jìn)行多少次差分操作。而模型中的項(xiàng)數(shù)則指的是自回歸項(xiàng)和移動(dòng)平均項(xiàng)的數(shù)量。這兩個(gè)參數(shù)對(duì)于模型的準(zhǔn)確性和有效性至關(guān)重要,但它們的選擇往往基于專業(yè)知識(shí)和經(jīng)驗(yàn)判斷,而非自動(dòng)化過(guò)程。2. 自回歸移動(dòng)平均模型(ARMA)基于線性假設(shè)來(lái)預(yù)測(cè)時(shí)間序列數(shù)據(jù),但這種假設(shè)可能不適用于許多數(shù)據(jù)庫(kù)工作負(fù)載。數(shù)據(jù)庫(kù)工作負(fù)載常受到外部因素的影響,這些因素可能包括不可預(yù)測(cè)的用戶行為、網(wǎng)絡(luò)流量、硬件性能變化等。這些外部因素使得數(shù)據(jù)庫(kù)工作負(fù)載的行為呈現(xiàn)出非線性特征,因此,簡(jiǎn)單的線性模型(如ARMA)可能無(wú)法準(zhǔn)確預(yù)測(cè)這些復(fù)雜和動(dòng)態(tài)變化的工作負(fù)載。
RNN效果不錯(cuò)適合預(yù)測(cè)非線性的變化。RNN的準(zhǔn)確性取決于訓(xùn)練數(shù)據(jù)集的大小,但追蹤數(shù)據(jù)庫(kù)中執(zhí)行的每個(gè)查詢會(huì)增加模型構(gòu)建的計(jì)算成本。Peloton DBMS采用了一種策略,即維護(hù)每個(gè)群組的多個(gè)RNN,以在不同的時(shí)間范圍和間隔粒度上預(yù)測(cè)工作負(fù)載。這些粗粒度的RNN雖然準(zhǔn)確度較低,但減少了DBMS需要維護(hù)的訓(xùn)練數(shù)據(jù)量以及運(yùn)行時(shí)的預(yù)測(cè)成本。通過(guò)結(jié)合多個(gè)RNN,DBMS能夠既處理需要更高準(zhǔn)確性的即時(shí)問(wèn)題,又能適應(yīng)長(zhǎng)期規(guī)劃,其中估算可以更寬泛。簡(jiǎn)而言之,這種方法平衡了準(zhǔn)確性、數(shù)據(jù)量和計(jì)算成本,以適應(yīng)不同的預(yù)測(cè)需求。
3.3 Action Planning & Execution
最后一部分是Peloton的control framework,主要就是監(jiān)視系統(tǒng)+選擇最優(yōu)actions來(lái)改善性能,autonomous組件和DBMS緊密耦合可以相互反饋(RL?),可能能在并發(fā)控制和查詢優(yōu)化方面進(jìn)行RL。
-
Action Generation Action生成
系統(tǒng)會(huì)search所有可能有優(yōu)化作用的actions,然后peloton會(huì)記錄action和對(duì)應(yīng)action發(fā)生之后系統(tǒng)發(fā)生什么的history存到catalog里面,以便系統(tǒng)尋找將提供最大利益的行動(dòng)。它還可以減少冗余actions以降低search的復(fù)雜性。每個(gè)actions都標(biāo)注了DBMS在部署該actions的時(shí)候需要使用的CPU Cores,所以可以在low demand的時(shí)候使用更多的cores來(lái)部署actions??刂艱BMS resources的knob(旋鈕)設(shè)計(jì)成增量變化(delta changes)而不是絕對(duì)值,特定的actions也有相反的actions來(lái)取消,例如add index and drop index.
-
Action Planning Action計(jì)劃(長(zhǎng)短期)
有了catalog記錄的actions,DBMS根據(jù)其預(yù)測(cè)、當(dāng)前數(shù)據(jù)庫(kù)配置和目標(biāo)函數(shù)(即延遲)選擇要部署的actions。這個(gè)過(guò)程的思想是:> Receding Horizon Control Model, RHCM(滾動(dòng)時(shí)域控制模型可能是叫這個(gè)名字),是一種先進(jìn)的控制策略,常用于管理復(fù)雜和動(dòng)態(tài)的系統(tǒng),例如自動(dòng)駕駛汽車或高級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)。它是一種優(yōu)化基礎(chǔ)的控制方法,也被稱為模型預(yù)測(cè)控制(Model Predictive Control, MPC)RHCM的核心思想是在每個(gè)決策時(shí)刻,系統(tǒng)都會(huì)基于當(dāng)前的狀態(tài)和預(yù)測(cè)的未來(lái)狀態(tài),評(píng)估一系列可能的行動(dòng)方案。這些行動(dòng)方案是為了在未來(lái)的一個(gè)有限的時(shí)間范圍內(nèi)(即“滾動(dòng)時(shí)域”)優(yōu)化某個(gè)目標(biāo)函數(shù),比如最小化能耗或延遲。系統(tǒng)會(huì)選擇一個(gè)最優(yōu)的行動(dòng)序列,但只執(zhí)行序列中的第一個(gè)行動(dòng),然后在下一個(gè)決策時(shí)刻重新評(píng)估和調(diào)整行動(dòng)計(jì)劃。這種方法的關(guān)鍵優(yōu)勢(shì)在于它能夠適應(yīng)環(huán)境變化,并在不斷變化的條件下做出最佳決策。它通過(guò)定期重新評(píng)估情況和調(diào)整行動(dòng)計(jì)劃,可以靈活地應(yīng)對(duì)未來(lái)的不確定性。這使得RHCM非常適合于那些需要頻繁調(diào)整和優(yōu)化決策的場(chǎng)景,如動(dòng)態(tài)數(shù)據(jù)庫(kù)管理系統(tǒng)中的工作負(fù)載管理。
在每個(gè)時(shí)間點(diǎn),系統(tǒng)使用預(yù)測(cè)來(lái)估計(jì)未來(lái)一段有限時(shí)間內(nèi)的工作負(fù)載。然后,它尋找一系列操作,這些操作能夠最小化目標(biāo)函數(shù)。但是,系統(tǒng)只會(huì)應(yīng)用序列中的第一個(gè)操作,并等待該操作完成后,再重復(fù)這個(gè)過(guò)程來(lái)處理下一個(gè)時(shí)間點(diǎn)的情況。這就是為什么使用高性能的DBMS至關(guān)重要的原因;如果操作在幾分鐘內(nèi)完成,那么系統(tǒng)就不需要監(jiān)控工作負(fù)載是否發(fā)生了變化,或決定是否中止正在進(jìn)行的操作??偟膩?lái)說(shuō),這個(gè)過(guò)程強(qiáng)調(diào)了在動(dòng)態(tài)和變化的環(huán)境中,如何有效地規(guī)劃和調(diào)整數(shù)據(jù)庫(kù)的操作,以優(yōu)化性能并應(yīng)對(duì)預(yù)測(cè)到的工作負(fù)載變化。
在RHCM下,planning建模成tree,每一層包含在那個(gè)時(shí)刻DBMS可以調(diào)用的每個(gè)action,系統(tǒng)遍歷樹(shù),根據(jù)cost-benefit來(lái)計(jì)算action的代價(jià),選擇一個(gè)有最佳結(jié)果的action序列,在某個(gè)時(shí)間點(diǎn),模塊也可能選擇不執(zhí)行任何操作。
為了降低這一過(guò)程的復(fù)雜性,一種方法是在搜索樹(shù)的更深層隨機(jī)選擇要考慮的操作,而不是評(píng)估所有可能的操作。這種抽樣是加權(quán)的,使得對(duì)于數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)及其預(yù)期工作負(fù)載最有益的操作更有可能被考慮。同時(shí),它也避免了那些最近被調(diào)用但系統(tǒng)后來(lái)撤銷其更改的操作。
action的cost是通過(guò)部署該操作所需時(shí)間的估計(jì),以及在此期間DBMS的性能會(huì)下降多少來(lái)衡量的。由于以前沒(méi)有部署過(guò)許多操作,因此不可能總是從以前的歷史記錄生成此信息。因此,系統(tǒng)使用分析模型來(lái)估計(jì)每個(gè)動(dòng)作類型的成本,然后通過(guò)反饋機(jī)制自動(dòng)優(yōu)化它們。
action的benefit是執(zhí)行這個(gè)action之后query的速度變化,這種benefit是從DBMS內(nèi)部的query planner的cost model成本模型中得出的。它是install action后查詢樣本延遲改善的總和,這些改善按照預(yù)測(cè)模型預(yù)測(cè)的查詢到達(dá)率進(jìn)行加權(quán)。還可以考慮根據(jù)其時(shí)間范圍進(jìn)一步加權(quán),使即時(shí)(可能更準(zhǔn)確)模型在最終的成本效益分析中具有更大的影響力。
除了cost-benefit,系統(tǒng)還必須估計(jì)一個(gè)action隨著時(shí)間的推移將如何影響Peloton的內(nèi)存利用率。任何導(dǎo)致DBMS超過(guò)內(nèi)存閾值的操作都被認(rèn)為是不可行的,并被丟棄。
最重要的是系統(tǒng)在選擇action時(shí)應(yīng)該考慮到多遠(yuǎn)的未來(lái),使用太短的水平將阻止DBMS及時(shí)準(zhǔn)備即將到來(lái)的負(fù)載峰值,但使用太長(zhǎng)的水平可能使它無(wú)法緩解突發(fā)問(wèn)題,因?yàn)槟P吞恕?/p>
由于在每個(gè)時(shí)間點(diǎn)計(jì)算成本-收益是一項(xiàng)耗費(fèi)資源的工作,文中提到了可能創(chuàng)建另一個(gè)深度神經(jīng)網(wǎng)絡(luò)來(lái)以一種價(jià)值函數(shù)的方式近似這些成本-收益計(jì)算。這意味著使用深度學(xué)習(xí)的方法來(lái)估計(jì)操作的潛在價(jià)值,而不是每次都進(jìn)行昂貴的完整計(jì)算。通過(guò)這種方式,系統(tǒng)能夠更高效地估算不同操作的成本和收益,從而快速做出決策,特別是在動(dòng)態(tài)變化的環(huán)境中。
-
Deployment
Peloton支持以非阻塞方式部署actions。例如,重新組織表的布局或?qū)⑵湟苿?dòng)到不同的位置不會(huì)阻止查詢?cè)L問(wèn)該表。有些操作,如添加索引,需要特別考慮,以便DBMS不會(huì)因操作進(jìn)行時(shí)數(shù)據(jù)被修改而產(chǎn)生任何假陰性/假陽(yáng)性。DBMS還處理來(lái)自其集成機(jī)器學(xué)習(xí)組件的資源調(diào)度和爭(zhēng)用問(wèn)題。使用單獨(dú)的協(xié)處理器或GPU來(lái)處理繁重的計(jì)算任務(wù)將避免降低DBMS的速度。否則,DBMS將不得不使用專門(mén)用于所有預(yù)測(cè)和計(jì)劃組件的單獨(dú)機(jī)器。這將使系統(tǒng)的設(shè)計(jì)復(fù)雜化,并由于協(xié)調(diào)而增加額外的開(kāi)銷。
3.4 Additional Considerations
一個(gè)重要非技術(shù)的方面是:DBA問(wèn)題,DBA不愿意放棄對(duì)數(shù)據(jù)庫(kù)的控制,轉(zhuǎn)而使用自動(dòng)化系統(tǒng)??紤]以人類可讀的格式公開(kāi)其決策制定過(guò)程,例如,如果它選擇添加一個(gè)索引,它可以向DBA提供一個(gè)解釋,說(shuō)明它的模型顯示當(dāng)前的工作負(fù)載類似于過(guò)去的某個(gè)點(diǎn),在這個(gè)點(diǎn)上索引是有幫助的。
還需要支持根據(jù)DBA的hints來(lái)該更多地優(yōu)化在線事務(wù)處理(OLTP)還是在線分析處理(OLAP)部分的工作負(fù)載。
多租戶場(chǎng)景下,系統(tǒng)需要能夠區(qū)分不同數(shù)據(jù)庫(kù)的重要性。這可能意味著某些數(shù)據(jù)庫(kù)需要更多的資源和優(yōu)化,而其他數(shù)據(jù)庫(kù)則不那么重要
DBA的覆蓋機(jī)制:系統(tǒng)可能需要提供一種機(jī)制,允許DBA覆蓋自動(dòng)決策。DBA的這些人工決策會(huì)被系統(tǒng)記錄并評(píng)估,以確定它們是否有益。然而,系統(tǒng)不被允許自行撤銷這些人工決策。
防止DBA做出永久性錯(cuò)誤決策:為了防止DBA做出可能對(duì)系統(tǒng)有長(zhǎng)期負(fù)面影響的決策,DBMS可以要求DBA為其手動(dòng)操作提供一個(gè)過(guò)期時(shí)間。如果這個(gè)操作被證明是有效的,DBMS會(huì)保留它;否則,系統(tǒng)可以移除它并選擇一個(gè)更好的方案。
4. PRELIMINARY RESULTS
場(chǎng)景:peloton集成了google tensorflow使用DBMS的內(nèi)部遙測(cè)數(shù)據(jù)執(zhí)行工作負(fù)載預(yù)測(cè)。在一個(gè)在線討論網(wǎng)站一個(gè)月的流量數(shù)據(jù)中提取的5200萬(wàn)條查詢來(lái)訓(xùn)練兩個(gè)rnn,這些數(shù)據(jù)的75%用于訓(xùn)練模型,剩余的25%用于驗(yàn)證模型。模型的設(shè)計(jì)包括兩層堆疊的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)層,后接一個(gè)線性回歸層,并使用了10%的丟棄率來(lái)避免過(guò)擬合。
- 第一個(gè)模型:這個(gè)模型預(yù)測(cè)下一個(gè)小時(shí)內(nèi)每分鐘將到達(dá)的查詢數(shù)量。它的輸入是一個(gè)向量,代表過(guò)去兩小時(shí)內(nèi)每分鐘的工作負(fù)載,而輸出是一個(gè)標(biāo)量,代表一個(gè)小時(shí)后預(yù)測(cè)的工作負(fù)載。簡(jiǎn)而言之,這個(gè)模型基于過(guò)去兩小時(shí)的詳細(xì)工作負(fù)載數(shù)據(jù)來(lái)預(yù)測(cè)下一個(gè)小時(shí)的工作負(fù)載。
- 第二個(gè)模型:這個(gè)模型使用24小時(shí)的時(shí)間范圍,以一小時(shí)的粒度進(jìn)行預(yù)測(cè)。其輸入是代表前一天工作負(fù)載的向量,輸出是代表一天后預(yù)測(cè)工作負(fù)載的標(biāo)量。這意味著,基于過(guò)去一天的工作負(fù)載數(shù)據(jù),這個(gè)模型預(yù)測(cè)下一天的總體工作負(fù)載。
總的來(lái)說(shuō),這兩個(gè)模型分別提供了短期和長(zhǎng)期的工作負(fù)載預(yù)測(cè),使得數(shù)據(jù)庫(kù)管理系統(tǒng)能夠根據(jù)不同的時(shí)間尺度和精度需求來(lái)優(yōu)化資源分配和管理策略。
(2a)和(2b)第一個(gè)圖表顯示了兩個(gè)不同時(shí)間范圍內(nèi)rnn生成的預(yù)測(cè)與實(shí)際工作負(fù)載數(shù)據(jù)集的可視化。(2c)中的第二張圖比較了Peloton在模擬HTAP應(yīng)用程序中使用自主混合存儲(chǔ)布局操作和靜態(tài)布局時(shí)的性能。
- 訓(xùn)練過(guò)程:使用Nvidia GeForce GTX 980 GPU運(yùn)行Peloton和TensorFlow,第一個(gè)和第二個(gè)RNN的訓(xùn)練時(shí)間分別為11分鐘和18分鐘。由于所有計(jì)算都由GPU執(zhí)行,因此在訓(xùn)練過(guò)程中幾乎沒(méi)有CPU開(kāi)銷。
- 預(yù)測(cè)準(zhǔn)確性:兩個(gè)模型能夠以較低的錯(cuò)誤率預(yù)測(cè)工作負(fù)載(1小時(shí)RNN的錯(cuò)誤率為11.3%,24小時(shí)RNN的錯(cuò)誤率為13.2%)。這些數(shù)據(jù)顯示出這些模型對(duì)于預(yù)測(cè)工作負(fù)載的有效性。
- 運(yùn)行時(shí)開(kāi)銷:研究人員還測(cè)量了RNN的存儲(chǔ)和計(jì)算成本。每個(gè)模型大約占用2MB的存儲(chǔ)空間。DBMS獲取新預(yù)測(cè)的時(shí)間為2毫秒,向模型中添加新數(shù)據(jù)點(diǎn)的時(shí)間為5毫秒。后者時(shí)間較長(zhǎng),因?yàn)門(mén)ensorFlow執(zhí)行反向傳播來(lái)更新模型的梯度。
- 數(shù)據(jù)優(yōu)化操作:使用這些模型,Peloton啟用了數(shù)據(jù)優(yōu)化操作,根據(jù)訪問(wèn)它們的查詢類型將表遷移到不同的布局。每個(gè)表的“熱”元組存儲(chǔ)在針對(duì)OLTP優(yōu)化的行式布局中,而同一表中的其他“冷”元組存儲(chǔ)在更適合OLAP查詢的列式布局中。
- 實(shí)際工作負(fù)載測(cè)試:研究人員使用模擬的HTAP(混合事務(wù)/分析處理)工作負(fù)載進(jìn)行測(cè)試,該工作負(fù)載在白天執(zhí)行OLTP操作,晚上執(zhí)行OLAP查詢。他們?cè)赑eloton中執(zhí)行
圖2c看出:
- 工作負(fù)載適應(yīng)性:Peloton隨時(shí)間調(diào)整,逐漸轉(zhuǎn)換到適合工作負(fù)載段的布局。在第一個(gè)工作負(fù)載段之后,DBMS將行式布局的元組遷移到更適合OLAP查詢的列式布局。這導(dǎo)致延遲下降,并與純列式系統(tǒng)的性能匹配。
- 工作負(fù)載變化應(yīng)對(duì):當(dāng)工作負(fù)載轉(zhuǎn)換到OLTP查詢時(shí),自駕系統(tǒng)比靜態(tài)的列式布局表現(xiàn)得更好,因?yàn)樗鼒?zhí)行的內(nèi)存寫(xiě)操作更少。
-
初步結(jié)果的應(yīng)許性:這些初步結(jié)果顯示出前景:
- RNNs準(zhǔn)確預(yù)測(cè)了查詢的預(yù)期到達(dá)率。
- 硬件加速訓(xùn)練對(duì)DBMS的CPU和內(nèi)存資源影響較小。
- 系統(tǒng)部署操作時(shí)不會(huì)減慢應(yīng)用程序的速度。
- 后續(xù)步驟:下一步是使用更多樣化的數(shù)據(jù)庫(kù)工作負(fù)載和支持更多操作來(lái)驗(yàn)證這種方法。
這些發(fā)現(xiàn)表明,Peloton項(xiàng)目在自動(dòng)優(yōu)化數(shù)據(jù)庫(kù)布局和處理不同類型的工作負(fù)載方面取得了顯著進(jìn)展,顯示了自駕數(shù)據(jù)庫(kù)系統(tǒng)在實(shí)際應(yīng)用中的潛力和有效性。
5. RELATED WORK
目前沒(méi)有一個(gè)現(xiàn)有的系統(tǒng)能夠結(jié)合所有這些技術(shù)來(lái)實(shí)現(xiàn)完全的操作獨(dú)立性,而不需要人工監(jiān)視、管理和調(diào)優(yōu)DBMS。
-
Workload Modeling
馬爾可夫模型用于工作負(fù)載狀態(tài):一些方法使用概率馬爾可夫模型來(lái)表示應(yīng)用程序的工作負(fù)載狀態(tài)。利用這些模型來(lái)判斷工作負(fù)載何時(shí)發(fā)生了顯著變化,指示DBA需要更新數(shù)據(jù)庫(kù)的物理設(shè)計(jì)。
預(yù)測(cè)下一個(gè)查詢:其他研究生成馬爾可夫模型,根據(jù)應(yīng)用程序當(dāng)前執(zhí)行的查詢來(lái)估計(jì)它接下來(lái)會(huì)執(zhí)行的查詢。這對(duì)于預(yù)取數(shù)據(jù)或應(yīng)用其他優(yōu)化措施很有用。
交易預(yù)測(cè):構(gòu)建馬爾可夫模型,專門(mén)用于預(yù)測(cè)交易序列中的下一個(gè)交易。
系統(tǒng)調(diào)優(yōu)的工作負(fù)載分類:識(shí)別樣本工作負(fù)載是更適合OLTP(在線事務(wù)處理)還是OLAP(在線分析處理)風(fēng)格的應(yīng)用程序,并相應(yīng)地調(diào)整系統(tǒng)配置。
OLAP查詢的資源分配:使用決策樹(shù)來(lái)調(diào)度和分配專門(mén)用于OLAP查詢的資源。
從未標(biāo)記的工作負(fù)載中提取查詢序列:一些方法專注于從未標(biāo)記的工作負(fù)載跟蹤中提取查詢序列。
OLTP交易分類:DBSeer根據(jù)查詢的邏輯語(yǔ)義和它們?cè)L問(wèn)的元組數(shù)量來(lái)分類OLTP交易。然后,它結(jié)合分析和學(xué)習(xí)的統(tǒng)計(jì)模型來(lái)預(yù)測(cè)并發(fā)工作負(fù)載下的DBMS利用率。
云計(jì)算系統(tǒng)的長(zhǎng)期資源需求預(yù)測(cè):大多數(shù)之前關(guān)于預(yù)測(cè)長(zhǎng)期資源需求的研究都集中在云計(jì)算系統(tǒng)上,文獻(xiàn)中提出基于ARMA的方法來(lái)預(yù)測(cè)未來(lái)資源利用趨勢(shì)。
數(shù)據(jù)庫(kù)即服務(wù)(DBaaS)平臺(tái)中的預(yù)測(cè)模型:預(yù)測(cè)模型也用于DBaaS平臺(tái)中的租戶放置和負(fù)載均衡。
-
Automated Administration
微軟AutoAdmin:微軟的AutoAdmin是利用數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)內(nèi)置的成本模型的先驅(qū)。它使用查詢優(yōu)化器的內(nèi)置成本模型來(lái)估算物理設(shè)計(jì)變更的好處。這樣做避免了工具選擇的良好索引與系統(tǒng)用于查詢優(yōu)化的索引之間的不一致。這意味著AutoAdmin直接利用了DBMS內(nèi)部的成本評(píng)估機(jī)制來(lái)指導(dǎo)其物理設(shè)計(jì)優(yōu)化決策。
配置工具的限制:配置工具不能使用查詢優(yōu)化器的內(nèi)置成本模型。這是因?yàn)檫@些模型是為了在固定的執(zhí)行環(huán)境中比較替代執(zhí)行策略而生成查詢執(zhí)行工作量的估算。換言之,這些模型專注于評(píng)估執(zhí)行單個(gè)查詢的成本,而不適用于評(píng)估整體的物理設(shè)計(jì)更改。各大DBMS廠商的工具:所有主要的DBMS廠商都有自己的專有工具,這些工具在支持的自動(dòng)化程度上各不相同。這些工具通常專門(mén)針對(duì)各自DBMS的特性和優(yōu)化策略進(jìn)行設(shè)計(jì)。
iTuned工具:iTuned是一個(gè)通用工具,它在DBMS未充分利用時(shí)持續(xù)進(jìn)行微小的配置更改。這表明iTuned旨在動(dòng)態(tài)調(diào)整配置,以優(yōu)化DBMS的性能和資源利用率
IBM的DB2 Performance Wizard:IBM發(fā)布了DB2 Performance Wizard工具,該工具向數(shù)據(jù)庫(kù)管理員(DBA)詢問(wèn)有關(guān)其應(yīng)用程序的問(wèn)題,然后根據(jù)他們的回答提供配置設(shè)置(knob settings)。該工具使用DB2工程師手動(dòng)創(chuàng)建的模型,因此可能無(wú)法準(zhǔn)確反映實(shí)際的工作負(fù)載或運(yùn)行環(huán)境。
自調(diào)整內(nèi)存管理:IBM后來(lái)發(fā)布了帶有自調(diào)整內(nèi)存管理器的DB2版本,該管理器使用啟發(fā)式方法來(lái)分配內(nèi)存給DBMS的內(nèi)部組件。類似地,Oracle開(kāi)發(fā)了一個(gè)系統(tǒng)來(lái)識(shí)別由于配置錯(cuò)誤導(dǎo)致的瓶頸。
Oracle的配置修改評(píng)估工具:Oracle的后續(xù)版本包括一個(gè)工具,用于估計(jì)配置修改的影響。Microsoft的SQL Server也使用了類似的方法。
DBSherlock:最近,DBSherlock工具幫助DBA通過(guò)比較性能追蹤數(shù)據(jù)中系統(tǒng)運(yùn)行緩慢的區(qū)域和正常行為的區(qū)域來(lái)診斷問(wèn)題。
在線優(yōu)化和數(shù)據(jù)庫(kù)裂解技術(shù):在線優(yōu)化方面,最有影響的方法之一是MonetDB的數(shù)據(jù)庫(kù)裂解技術(shù),使得DBMS能夠基于查詢?cè)L問(wèn)數(shù)據(jù)的方式增量地構(gòu)建索引.
-
Autonomous DBMSs
IBM的DB2自動(dòng)化嘗試:IBM對(duì)DB2進(jìn)行了一項(xiàng)完全自動(dòng)化的概念驗(yàn)證。該系統(tǒng)使用了現(xiàn)有工具并結(jié)合了一個(gè)外部控制器和監(jiān)視器。當(dāng)資源閾值被超過(guò)時(shí)(例如,死鎖的數(shù)量增加),該系統(tǒng)會(huì)觸發(fā)變更。然而,這個(gè)原型仍然需要人類數(shù)據(jù)庫(kù)管理員(DBA)來(lái)選擇調(diào)優(yōu)優(yōu)化措施,并偶爾重啟DBMS。與自駕式DBMS不同,這個(gè)系統(tǒng)只能在問(wèn)題發(fā)生后做出反應(yīng),因?yàn)樗狈︻A(yù)測(cè)功能。
云計(jì)算平臺(tái)中的自動(dòng)化:自動(dòng)化在云計(jì)算平臺(tái)中更為常見(jiàn),因?yàn)樵破脚_(tái)的規(guī)模和復(fù)雜性。例如,微軟Azure使用遙測(cè)數(shù)據(jù)建模DBMS容器的資源利用率,并自動(dòng)調(diào)整分配,以滿足服務(wù)質(zhì)量(QoS)和預(yù)算限制.
云中的黑盒控制器:還有一些控制器用于云中應(yīng)用程序的黑盒配置。
使用RHCM的嘗試:文獻(xiàn)[Efficient Autoscaling in the Cloud Using Predictive Models for Workload Forecasting]中的作者使用與Peloton相同的滾動(dòng)時(shí)域控制模型(RHCM),但他們只支持自駕式DBMS的一部分操作文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-802519.html
6. CONCLUSION
隨著big data的發(fā)展,autonomous數(shù)據(jù)庫(kù)需求更加強(qiáng)烈,這樣的系統(tǒng)將消除部署任何規(guī)模數(shù)據(jù)庫(kù)的人力資本障礙,使組織更容易從數(shù)據(jù)驅(qū)動(dòng)的決策制定應(yīng)用中獲得好處。本文概述了Peloton DBMS的self-driving架構(gòu)。我們認(rèn)為,由于深度神經(jīng)網(wǎng)絡(luò)、改進(jìn)的硬件和高性能數(shù)據(jù)庫(kù)架構(gòu)的進(jìn)步,使得這種系統(tǒng)現(xiàn)已可能。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-802519.html
到了這里,關(guān)于【論文閱讀 CIDR17】Self-Driving Database Management Systems的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!