來源:北京大學數(shù)據(jù)與智能實驗室


關鍵詞
Database Management System
Performance Optimization
Performance Prediction
Anomaly Diagnosis
Database Tuning
Survey
導 讀
SCIENCE CHINA Information Sciences (SCIS)中文全稱為中國科學信息科學,是中國科學院和國家自然科學基金委員會共同主辦、《中國科學》雜志社出版的學術刊物,其2022影響因子7.275,主要發(fā)表信息科學領域的高質量學術論文。PKU-DAIR實驗室研究成果《Survey on Performance Optimization for Database Systems》已被SCIENCE CHINA Information Sciences接收。近年來,性能優(yōu)化作為數(shù)據(jù)庫運維的重要環(huán)節(jié),在工業(yè)界與學術界均受到廣泛關注。該綜述旨在梳理總結關于數(shù)據(jù)庫性能優(yōu)化的研究工作,以供相關領域的研究人員與工業(yè)界人士進行快速了解。該綜述根據(jù)運維的不同環(huán)節(jié),按照性能預測、異常診斷、調優(yōu)這三個主題,分析了相關任務的目標與挑戰(zhàn),總結了現(xiàn)有工作的應對方案、優(yōu)點與局限性,并闡述了未來有待進一步探索的方向。
論文鏈接:
https://www.sciengine.com/SCIS/doi/10.1007/s11432-021-3578-6
01 引言
隨著現(xiàn)代數(shù)據(jù)庫系統(tǒng)與業(yè)務日益復雜,性能優(yōu)化已成為數(shù)據(jù)庫領域的研究熱點。作為服務級別協(xié)議(Service Level Agreement, SLA)的重要組成部分,數(shù)據(jù)庫性能是用戶所關心的重要指標,也是運維人員的重點優(yōu)化對象。數(shù)據(jù)庫性能的衡量指標主要包括事務或查詢的吞吐量與延遲,部分場景還會考慮資源用量。本文僅關注以吞吐量與延遲作為主要優(yōu)化目標的研究工作。在數(shù)據(jù)庫系統(tǒng)中,影響性能的主要因素包括系統(tǒng)設計、配置、工作負載。其中,系統(tǒng)設計通常由開發(fā)人員考慮,本文則是從運維角度,關注配置與工作負載相關優(yōu)化。相應主題包括:性能預測(Performance Prediction)、異常診斷(Anomaly Diagnosis)、調優(yōu)(Tuning)。本文圍繞這些主題,評述了具有代表性的研究工作,闡述了研究挑戰(zhàn)與未來有待進一步探索的方向。

圖 1 數(shù)據(jù)庫性能影響因素與研究主題的關聯(lián)
02 數(shù)據(jù)集
數(shù)據(jù)集是性能優(yōu)化實驗的基礎。大多數(shù)研究工作使用開源benchmark構建數(shù)據(jù),其工作負載分為OLTP(事務型)與OLAP(分析型)兩種。典型的OLTP benchmark包括TPC-C, TPC-E, YCSB, TATP, Smallbank等。典型的OLAP benchmark包括TPC-H, TPC-DS, JOB等。部分研究工作則使用來自真實業(yè)務的數(shù)據(jù)。這些數(shù)據(jù)往往更具可信度,但通常難以獲取,因為它們容易涉及數(shù)據(jù)庫用戶隱私,而且數(shù)據(jù)采集與打標簽的開銷較大。
03 性能預測 Performance Prediction
數(shù)據(jù)庫性能預測的目標是在給定的環(huán)境下,預測查詢的執(zhí)行時間(延遲)或吞吐量。與數(shù)據(jù)庫優(yōu)化器(Optimizer)內部的代價估計(Cost Estimation)有所不同,它往往是監(jiān)控系統(tǒng)或自適應數(shù)據(jù)庫系統(tǒng)(Self-driving Database System)的組成部分,以指導正常環(huán)境下的性能調優(yōu)。隨著機器學習技術的發(fā)展,許多研究工作用機器學習模型代替基于公式與規(guī)則的算法,在數(shù)據(jù)庫環(huán)境相對固定的情形下,能夠取得較好的效果。相關工作按預測對象可分為單查詢、多查詢兩類。

圖 2 數(shù)據(jù)庫性能預測研究工作匯總
(3-1)單查詢
此類工作僅針對單一查詢,不考慮并發(fā)執(zhí)行的影響。我們選取了近年來采用機器學習算法的代表性工作進行評述。它們將執(zhí)行計劃以算子粒度編碼為向量,訓練機器學習模型用于預測。其中,編碼的信息可包括來自數(shù)據(jù)庫優(yōu)化器的信息,如基數(shù)(Cardinality)、代價(Cost)等。
(3-2)多查詢
此類工作以整個工作負載為輸入,通常先進行聚類和采樣,再輸入模型進行預測。部分工作不僅考慮工作負載信息,還將環(huán)境信息加入模型輸入,例如配置參數(shù)、硬件信息等,這有助于模型適應動態(tài)變化的環(huán)境。
04 異常診斷 Anomaly Diagnosis
數(shù)據(jù)庫性能異常主要表現(xiàn)為吞吐量下降或較長的查詢延遲。異常診斷的目標是定位異常根因,可作為異常環(huán)境下性能調優(yōu)的指導。在不同研究工作中,診斷系統(tǒng)的輸入、輸出、支持的異常類型均有所不同。我們根據(jù)輸入數(shù)據(jù)的不同,將其分為三類:

圖 3 數(shù)據(jù)庫性能異常診斷研究工作匯總
(4-1)基于監(jiān)控指標
此類方法的輸入是操作系統(tǒng)和數(shù)據(jù)庫的關鍵績效指標(Key Performance Indicator, KPI),包括CPU、內存、I/O、網(wǎng)絡等資源指標,以及讀寫行數(shù)等工作負載指標。其輸出通常包含異常監(jiān)控指標與推測的異常類型,通常能支持大多數(shù)常見的性能異常。
(4-2)基于日志
此類方法的輸入是數(shù)據(jù)庫的debug日志,通常以兩份日志為輸入,比較其系統(tǒng)行為的差異。若兩份日志分別來自正常、異常環(huán)境,則其系統(tǒng)行為的差異可反映異常根因。此類方法的主要局限性在于記錄debug日志的開銷較大。
(4-3)基于時間
此類方法的輸入是時間指標,通常僅限于診斷資源瓶頸與競爭,相關算法通常基于圖結構的分析,以探索不同組件的資源開銷。
05 調優(yōu)
數(shù)據(jù)庫調優(yōu)旨在對性能影響因素進行調整,以提高吞吐量或降低延遲。相關的影響因素包括配置旋鈕(Configuration Knobs)、索引(Indexes)、視圖(View)、資源(Resource)、存儲(Storage)、查詢語句設計等。近年來,機器學習算法在該領域得到廣泛應用,代表性方法包括強化學習(Reinforcement Learning)、貝葉斯優(yōu)化(Bayesian Optimization)等。我們根據(jù)調優(yōu)對象的不同,將相關工作分為以下六類:

圖 4 數(shù)據(jù)庫性能調優(yōu)研究工作匯總
(5-1)調參(Knob Tuning)
數(shù)據(jù)庫系統(tǒng)內通常有上百個可供調節(jié)的旋鈕(Knob),對性能和資源使用有著重要影響。局部最優(yōu)的參數(shù)往往并非全局最優(yōu),不同參數(shù)之間存在相互影響,搜索空間大而復雜。常見調參技術包括基于規(guī)則搜索、貝葉斯優(yōu)化、強化學習等。
(5-2)索引選擇(Index Selection)
索引選擇是指對給定的工作負載與存儲限制,選擇合適的列建立索引。該任務的主要挑戰(zhàn)包括:(1)備選的索引很多,因為可以建立多列索引;(2)索引之間存在相互影響;(3)索引并非越多越好,例如增刪改操作會有索引開銷。傳統(tǒng)研究工作通常以純收益或單位空間收益為優(yōu)化目標,基于貪心、迭代、線性規(guī)劃等方法尋找最優(yōu)解。近年來,強化學習也被應用于這一問題。也有研究工作從代價比較的角度,利用機器學習模型進行優(yōu)化。

圖 5 索引選擇研究工作細節(jié)匯總(屬于調優(yōu)方法之一)
(5-3)視圖物化(View Materialization)
視圖物化是指保存一些查詢或子查詢的結果,供其他查詢使用。它可以通過減少重復操作來提升性能,但具有一定的存儲和維護代價。傳統(tǒng)方法主要有遺傳爬山算法、整數(shù)線性規(guī)劃等,近年來也有基于強化學習的方法被提出。
(5-4)彈性資源(Elastic Resource)
彈性資源主要通過增減設備節(jié)點數(shù)量、調整備份等方式進行性能優(yōu)化。以增加設備節(jié)點為例,首先數(shù)據(jù)被重新分片并決定備份數(shù),其次決定如何在各節(jié)點上分配這些數(shù)據(jù)分片,最后進行數(shù)據(jù)遷移。刪除節(jié)點的過程也是類似的。據(jù)此,相關研究工作主要分為兩類:一類關注資源與數(shù)據(jù)的分配,包括如何調整節(jié)點數(shù)、數(shù)據(jù)分片、備份等;另一類則關注如何動態(tài)遷移數(shù)據(jù),以降低遷移過程中的性能損失。
(5-5)存儲管理(Storage Management)
分布式存儲管理也是性能優(yōu)化的一種方式。一方面,這樣的技術有利于彌補通用分布式框架(如Spark)的不足,例如垃圾回收、索引構建等。另一方面,它們可以為特定的數(shù)據(jù)和方法提供支持,例如軌跡數(shù)據(jù)上的K近鄰算法等。
(5-6)SQL不良模式檢測(SQL Antipattern Detection)
SQL不良模式(SQL Antipattern)包括不良的查詢(Queries)和模式(Schema)。此類工作可協(xié)助數(shù)據(jù)庫管理人員進行定位和改寫。目前,相關工作主要依賴于人工制定的規(guī)則進行匹配檢測。
06 挑戰(zhàn)與未來工作
數(shù)據(jù)庫性能優(yōu)化仍然面臨眾多挑戰(zhàn)。我們針對不同主題,提出了一些有待解決的問題。
(6-1)性能預測
優(yōu)化器的估計不準確:現(xiàn)有方法大多依賴于優(yōu)化器的基數(shù)估計或代價估計,而這一估計是不準確的。近年來,機器學習算法被廣泛應用于此類問題,但仍具有一定挑戰(zhàn)性。
與性能調優(yōu)的隔閡:此類方法雖然能預測調優(yōu)前后的性能,但并不能指導何時調優(yōu)與如何調優(yōu),以降低調優(yōu)過程中的系統(tǒng)性能損失。
(6-2)性能異常診斷
有限的異常數(shù)據(jù):數(shù)據(jù)對此類工作的評測至關重要,但由于發(fā)生頻率低、缺乏標準、打標簽難度大,往往難以獲得。
數(shù)據(jù)采集的開銷:從數(shù)據(jù)庫系統(tǒng)視圖中采集一些表級指標,或者記錄debug日志,都會造成顯著的性能開銷。
OLTP與OLAP:二者的性能異常表現(xiàn)有較大差異,這一問題在混合負載中尤其顯著。
(6-3)性能調優(yōu)
何時優(yōu)化:現(xiàn)有的調優(yōu)過程通常是在發(fā)生性能下降之后進行的,并不能避免低性能的出現(xiàn)
動態(tài)工作負載:當工作負載發(fā)生變化時,原先的優(yōu)化方案可能并不適用。
這些問題的一種解決方案是在線優(yōu)化,但其安全性仍具有挑戰(zhàn)。
(6-4)其他
近年來,自適應數(shù)據(jù)庫系統(tǒng)(Self-driving Database System)是一個熱門話題,此類數(shù)據(jù)庫系統(tǒng)能根據(jù)工作負載和數(shù)據(jù)庫環(huán)境進行自動優(yōu)化,而無需人工干預。然而,數(shù)據(jù)庫系統(tǒng)內部包含大量組件,如何作為統(tǒng)一的系統(tǒng)進行設計,仍有待進一步探索。此外,一些新的數(shù)據(jù)庫組件設計,例如基于學習的優(yōu)化器、非易失性存儲、大規(guī)模分布式引擎等,如何將數(shù)據(jù)庫優(yōu)化工作遷移到此類系統(tǒng)上,進行不同于傳統(tǒng)數(shù)據(jù)庫的設計,也是值得研究的方向。
詳細了解本工作,請訪問下方鏈接地址:
論文鏈接:
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
實驗室簡介
北京大學數(shù)據(jù)與智能實驗室(Data And Intelligence Research Lab at Peking Univeristy,PKU-DAIR實驗室)由北京大學計算機學院崔斌教授領導,長期從事數(shù)據(jù)庫系統(tǒng)、大數(shù)據(jù)管理與分析、人工智能等領域的前沿研究,在理論和技術創(chuàng)新以及系統(tǒng)研發(fā)上取得多項成果,已在國際頂級學術會議和期刊發(fā)表學術論文100余篇,發(fā)布多個開源項目。課題組同學曾數(shù)十次獲得包括CCF優(yōu)博、北大優(yōu)博、微軟學者、蘋果獎學金、谷歌獎學金等榮譽。PKU-DAIR實驗室持續(xù)與工業(yè)界展開卓有成效的合作,與騰訊、阿里巴巴、蘋果、微軟、百度、快手、中興通訊等多家知名企業(yè)開展項目合作和前沿探索,解決實際問題,進行科研成果的轉化落地。
鏈接:[SCIS 2022] 數(shù)據(jù)庫性能優(yōu)化綜述 (qq.com)