來源:北京大學(xué)數(shù)據(jù)與智能實驗室
關(guān)鍵詞
Database Management System
Performance Optimization
Performance Prediction
Anomaly Diagnosis
Database Tuning
Survey
導(dǎo) 讀
SCIENCE CHINA Information Sciences (SCIS)中文全稱為中國科學(xué)信息科學(xué),是中國科學(xué)院和國家自然科學(xué)基金委員會共同主辦、《中國科學(xué)》雜志社出版的學(xué)術(shù)刊物,其2022影響因子7.275,主要發(fā)表信息科學(xué)領(lǐng)域的高質(zhì)量學(xué)術(shù)論文。PKU-DAIR實驗室研究成果《Survey on Performance Optimization for Database Systems》已被SCIENCE CHINA Information Sciences接收。近年來,性能優(yōu)化作為數(shù)據(jù)庫運維的重要環(huán)節(jié),在工業(yè)界與學(xué)術(shù)界均受到廣泛關(guān)注。該綜述旨在梳理總結(jié)關(guān)于數(shù)據(jù)庫性能優(yōu)化的研究工作,以供相關(guān)領(lǐng)域的研究人員與工業(yè)界人士進(jìn)行快速了解。該綜述根據(jù)運維的不同環(huán)節(jié),按照性能預(yù)測、異常診斷、調(diào)優(yōu)這三個主題,分析了相關(guān)任務(wù)的目標(biāo)與挑戰(zhàn),總結(jié)了現(xiàn)有工作的應(yīng)對方案、優(yōu)點與局限性,并闡述了未來有待進(jìn)一步探索的方向。
論文鏈接:
https://www.sciengine.com/SCIS/doi/10.1007/s11432-021-3578-6
01 引言
隨著現(xiàn)代數(shù)據(jù)庫系統(tǒng)與業(yè)務(wù)日益復(fù)雜,性能優(yōu)化已成為數(shù)據(jù)庫領(lǐng)域的研究熱點。作為服務(wù)級別協(xié)議(Service Level Agreement, SLA)的重要組成部分,數(shù)據(jù)庫性能是用戶所關(guān)心的重要指標(biāo),也是運維人員的重點優(yōu)化對象。數(shù)據(jù)庫性能的衡量指標(biāo)主要包括事務(wù)或查詢的吞吐量與延遲,部分場景還會考慮資源用量。本文僅關(guān)注以吞吐量與延遲作為主要優(yōu)化目標(biāo)的研究工作。在數(shù)據(jù)庫系統(tǒng)中,影響性能的主要因素包括系統(tǒng)設(shè)計、配置、工作負(fù)載。其中,系統(tǒng)設(shè)計通常由開發(fā)人員考慮,本文則是從運維角度,關(guān)注配置與工作負(fù)載相關(guān)優(yōu)化。相應(yīng)主題包括:性能預(yù)測(Performance Prediction)、異常診斷(Anomaly Diagnosis)、調(diào)優(yōu)(Tuning)。本文圍繞這些主題,評述了具有代表性的研究工作,闡述了研究挑戰(zhàn)與未來有待進(jìn)一步探索的方向。
圖 1 數(shù)據(jù)庫性能影響因素與研究主題的關(guān)聯(lián)
02 數(shù)據(jù)集
數(shù)據(jù)集是性能優(yōu)化實驗的基礎(chǔ)。大多數(shù)研究工作使用開源benchmark構(gòu)建數(shù)據(jù),其工作負(fù)載分為OLTP(事務(wù)型)與OLAP(分析型)兩種。典型的OLTP benchmark包括TPC-C, TPC-E, YCSB, TATP, Smallbank等。典型的OLAP benchmark包括TPC-H, TPC-DS, JOB等。部分研究工作則使用來自真實業(yè)務(wù)的數(shù)據(jù)。這些數(shù)據(jù)往往更具可信度,但通常難以獲取,因為它們?nèi)菀咨婕皵?shù)據(jù)庫用戶隱私,而且數(shù)據(jù)采集與打標(biāo)簽的開銷較大。
03 性能預(yù)測 Performance Prediction
數(shù)據(jù)庫性能預(yù)測的目標(biāo)是在給定的環(huán)境下,預(yù)測查詢的執(zhí)行時間(延遲)或吞吐量。與數(shù)據(jù)庫優(yōu)化器(Optimizer)內(nèi)部的代價估計(Cost Estimation)有所不同,它往往是監(jiān)控系統(tǒng)或自適應(yīng)數(shù)據(jù)庫系統(tǒng)(Self-driving Database System)的組成部分,以指導(dǎo)正常環(huán)境下的性能調(diào)優(yōu)。隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,許多研究工作用機(jī)器學(xué)習(xí)模型代替基于公式與規(guī)則的算法,在數(shù)據(jù)庫環(huán)境相對固定的情形下,能夠取得較好的效果。相關(guān)工作按預(yù)測對象可分為單查詢、多查詢兩類。
圖 2 數(shù)據(jù)庫性能預(yù)測研究工作匯總
(3-1)單查詢
此類工作僅針對單一查詢,不考慮并發(fā)執(zhí)行的影響。我們選取了近年來采用機(jī)器學(xué)習(xí)算法的代表性工作進(jìn)行評述。它們將執(zhí)行計劃以算子粒度編碼為向量,訓(xùn)練機(jī)器學(xué)習(xí)模型用于預(yù)測。其中,編碼的信息可包括來自數(shù)據(jù)庫優(yōu)化器的信息,如基數(shù)(Cardinality)、代價(Cost)等。
(3-2)多查詢
此類工作以整個工作負(fù)載為輸入,通常先進(jìn)行聚類和采樣,再輸入模型進(jìn)行預(yù)測。部分工作不僅考慮工作負(fù)載信息,還將環(huán)境信息加入模型輸入,例如配置參數(shù)、硬件信息等,這有助于模型適應(yīng)動態(tài)變化的環(huán)境。
04 異常診斷 Anomaly Diagnosis
數(shù)據(jù)庫性能異常主要表現(xiàn)為吞吐量下降或較長的查詢延遲。異常診斷的目標(biāo)是定位異常根因,可作為異常環(huán)境下性能調(diào)優(yōu)的指導(dǎo)。在不同研究工作中,診斷系統(tǒng)的輸入、輸出、支持的異常類型均有所不同。我們根據(jù)輸入數(shù)據(jù)的不同,將其分為三類:
圖 3 數(shù)據(jù)庫性能異常診斷研究工作匯總
(4-1)基于監(jiān)控指標(biāo)
此類方法的輸入是操作系統(tǒng)和數(shù)據(jù)庫的關(guān)鍵績效指標(biāo)(Key Performance Indicator, KPI),包括CPU、內(nèi)存、I/O、網(wǎng)絡(luò)等資源指標(biāo),以及讀寫行數(shù)等工作負(fù)載指標(biāo)。其輸出通常包含異常監(jiān)控指標(biāo)與推測的異常類型,通常能支持大多數(shù)常見的性能異常。
(4-2)基于日志
此類方法的輸入是數(shù)據(jù)庫的debug日志,通常以兩份日志為輸入,比較其系統(tǒng)行為的差異。若兩份日志分別來自正常、異常環(huán)境,則其系統(tǒng)行為的差異可反映異常根因。此類方法的主要局限性在于記錄debug日志的開銷較大。
(4-3)基于時間
此類方法的輸入是時間指標(biāo),通常僅限于診斷資源瓶頸與競爭,相關(guān)算法通?;趫D結(jié)構(gòu)的分析,以探索不同組件的資源開銷。
05 調(diào)優(yōu)
數(shù)據(jù)庫調(diào)優(yōu)旨在對性能影響因素進(jìn)行調(diào)整,以提高吞吐量或降低延遲。相關(guān)的影響因素包括配置旋鈕(Configuration Knobs)、索引(Indexes)、視圖(View)、資源(Resource)、存儲(Storage)、查詢語句設(shè)計等。近年來,機(jī)器學(xué)習(xí)算法在該領(lǐng)域得到廣泛應(yīng)用,代表性方法包括強(qiáng)化學(xué)習(xí)(Reinforcement Learning)、貝葉斯優(yōu)化(Bayesian Optimization)等。我們根據(jù)調(diào)優(yōu)對象的不同,將相關(guān)工作分為以下六類:
圖 4 數(shù)據(jù)庫性能調(diào)優(yōu)研究工作匯總
(5-1)調(diào)參(Knob Tuning)
數(shù)據(jù)庫系統(tǒng)內(nèi)通常有上百個可供調(diào)節(jié)的旋鈕(Knob),對性能和資源使用有著重要影響。局部最優(yōu)的參數(shù)往往并非全局最優(yōu),不同參數(shù)之間存在相互影響,搜索空間大而復(fù)雜。常見調(diào)參技術(shù)包括基于規(guī)則搜索、貝葉斯優(yōu)化、強(qiáng)化學(xué)習(xí)等。
(5-2)索引選擇(Index Selection)
索引選擇是指對給定的工作負(fù)載與存儲限制,選擇合適的列建立索引。該任務(wù)的主要挑戰(zhàn)包括:(1)備選的索引很多,因為可以建立多列索引;(2)索引之間存在相互影響;(3)索引并非越多越好,例如增刪改操作會有索引開銷。傳統(tǒng)研究工作通常以純收益或單位空間收益為優(yōu)化目標(biāo),基于貪心、迭代、線性規(guī)劃等方法尋找最優(yōu)解。近年來,強(qiáng)化學(xué)習(xí)也被應(yīng)用于這一問題。也有研究工作從代價比較的角度,利用機(jī)器學(xué)習(xí)模型進(jìn)行優(yōu)化。
圖 5 索引選擇研究工作細(xì)節(jié)匯總(屬于調(diào)優(yōu)方法之一)
(5-3)視圖物化(View Materialization)
視圖物化是指保存一些查詢或子查詢的結(jié)果,供其他查詢使用。它可以通過減少重復(fù)操作來提升性能,但具有一定的存儲和維護(hù)代價。傳統(tǒng)方法主要有遺傳爬山算法、整數(shù)線性規(guī)劃等,近年來也有基于強(qiáng)化學(xué)習(xí)的方法被提出。
(5-4)彈性資源(Elastic Resource)
彈性資源主要通過增減設(shè)備節(jié)點數(shù)量、調(diào)整備份等方式進(jìn)行性能優(yōu)化。以增加設(shè)備節(jié)點為例,首先數(shù)據(jù)被重新分片并決定備份數(shù),其次決定如何在各節(jié)點上分配這些數(shù)據(jù)分片,最后進(jìn)行數(shù)據(jù)遷移。刪除節(jié)點的過程也是類似的。據(jù)此,相關(guān)研究工作主要分為兩類:一類關(guān)注資源與數(shù)據(jù)的分配,包括如何調(diào)整節(jié)點數(shù)、數(shù)據(jù)分片、備份等;另一類則關(guān)注如何動態(tài)遷移數(shù)據(jù),以降低遷移過程中的性能損失。
(5-5)存儲管理(Storage Management)
分布式存儲管理也是性能優(yōu)化的一種方式。一方面,這樣的技術(shù)有利于彌補(bǔ)通用分布式框架(如Spark)的不足,例如垃圾回收、索引構(gòu)建等。另一方面,它們可以為特定的數(shù)據(jù)和方法提供支持,例如軌跡數(shù)據(jù)上的K近鄰算法等。
(5-6)SQL不良模式檢測(SQL Antipattern Detection)
SQL不良模式(SQL Antipattern)包括不良的查詢(Queries)和模式(Schema)。此類工作可協(xié)助數(shù)據(jù)庫管理人員進(jìn)行定位和改寫。目前,相關(guān)工作主要依賴于人工制定的規(guī)則進(jìn)行匹配檢測。
06 挑戰(zhàn)與未來工作
數(shù)據(jù)庫性能優(yōu)化仍然面臨眾多挑戰(zhàn)。我們針對不同主題,提出了一些有待解決的問題。
(6-1)性能預(yù)測
優(yōu)化器的估計不準(zhǔn)確:現(xiàn)有方法大多依賴于優(yōu)化器的基數(shù)估計或代價估計,而這一估計是不準(zhǔn)確的。近年來,機(jī)器學(xué)習(xí)算法被廣泛應(yīng)用于此類問題,但仍具有一定挑戰(zhàn)性。
與性能調(diào)優(yōu)的隔閡:此類方法雖然能預(yù)測調(diào)優(yōu)前后的性能,但并不能指導(dǎo)何時調(diào)優(yōu)與如何調(diào)優(yōu),以降低調(diào)優(yōu)過程中的系統(tǒng)性能損失。
(6-2)性能異常診斷
有限的異常數(shù)據(jù):數(shù)據(jù)對此類工作的評測至關(guān)重要,但由于發(fā)生頻率低、缺乏標(biāo)準(zhǔn)、打標(biāo)簽難度大,往往難以獲得。
數(shù)據(jù)采集的開銷:從數(shù)據(jù)庫系統(tǒng)視圖中采集一些表級指標(biāo),或者記錄debug日志,都會造成顯著的性能開銷。
OLTP與OLAP:二者的性能異常表現(xiàn)有較大差異,這一問題在混合負(fù)載中尤其顯著。
(6-3)性能調(diào)優(yōu)
何時優(yōu)化:現(xiàn)有的調(diào)優(yōu)過程通常是在發(fā)生性能下降之后進(jìn)行的,并不能避免低性能的出現(xiàn)
動態(tài)工作負(fù)載:當(dāng)工作負(fù)載發(fā)生變化時,原先的優(yōu)化方案可能并不適用。
這些問題的一種解決方案是在線優(yōu)化,但其安全性仍具有挑戰(zhàn)。
(6-4)其他
近年來,自適應(yīng)數(shù)據(jù)庫系統(tǒng)(Self-driving Database System)是一個熱門話題,此類數(shù)據(jù)庫系統(tǒng)能根據(jù)工作負(fù)載和數(shù)據(jù)庫環(huán)境進(jìn)行自動優(yōu)化,而無需人工干預(yù)。然而,數(shù)據(jù)庫系統(tǒng)內(nèi)部包含大量組件,如何作為統(tǒng)一的系統(tǒng)進(jìn)行設(shè)計,仍有待進(jìn)一步探索。此外,一些新的數(shù)據(jù)庫組件設(shè)計,例如基于學(xué)習(xí)的優(yōu)化器、非易失性存儲、大規(guī)模分布式引擎等,如何將數(shù)據(jù)庫優(yōu)化工作遷移到此類系統(tǒng)上,進(jìn)行不同于傳統(tǒng)數(shù)據(jù)庫的設(shè)計,也是值得研究的方向。
詳細(xì)了解本工作,請訪問下方鏈接地址:
論文鏈接:
https://www.sciengine.com/SCIS/doi/10.1007/s11432-021-3578-6
References:
[1] Zhou X, Chai C, Li G, et al. Database meets artificial intelligence: A survey. TKDE, 2022.
[2] Pavlo A, Angulo G, Arulraj J, et al. Self-driving database management systems. CIDR, 2017.
[3] Mozafari B, Curino C, Jindal A, et al. Performance and resource modeling in highly-concurrent OLTP workloads. SIGMOD, 2013.
[4] Ma M, Yin Z, Zhang S, et al. Diagnosing root causes of intermittent slow queries in large-scale cloud databases. VLDB, 2020.
[5] Zhang X, Chang Z, Li Y, et al. Facilitating database tuning with hyper-parameter optimization: A comprehensive experimental evaluation. VLDB, 2022.
END
實驗室簡介
北京大學(xué)數(shù)據(jù)與智能實驗室(Data And Intelligence Research Lab at Peking Univeristy,PKU-DAIR實驗室)由北京大學(xué)計算機(jī)學(xué)院崔斌教授領(lǐng)導(dǎo),長期從事數(shù)據(jù)庫系統(tǒng)、大數(shù)據(jù)管理與分析、人工智能等領(lǐng)域的前沿研究,在理論和技術(shù)創(chuàng)新以及系統(tǒng)研發(fā)上取得多項成果,已在國際頂級學(xué)術(shù)會議和期刊發(fā)表學(xué)術(shù)論文100余篇,發(fā)布多個開源項目。課題組同學(xué)曾數(shù)十次獲得包括CCF優(yōu)博、北大優(yōu)博、微軟學(xué)者、蘋果獎學(xué)金、谷歌獎學(xué)金等榮譽(yù)。PKU-DAIR實驗室持續(xù)與工業(yè)界展開卓有成效的合作,與騰訊、阿里巴巴、蘋果、微軟、百度、快手、中興通訊等多家知名企業(yè)開展項目合作和前沿探索,解決實際問題,進(jìn)行科研成果的轉(zhuǎn)化落地。
鏈接:[SCIS 2022] 數(shù)據(jù)庫性能優(yōu)化綜述 (qq.com)