VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?
?作者?|?曲昌博
單位?|?西蒙菲莎大學
近日,IEEE 數據工程新星獎王健楠團隊論文《Are We Ready for Learned Cardinality Estimation?》奪得數據庫頂會 VLDB 2021 年度的 EA&B 最佳論文獎。
數據庫是企業管理和查詢數據的復雜軟件系統。
近年來隨著機器學習以及深度學習方面技術的進步以及在其它領域內被成功應用的先例,ML for DB 這個課題變得越來越火,但是大多數方法尚局限于學術圈的探索階段。
如果把目光放到 5-10 年之后的該課題的發展,一種可能性是大家發現這些模型并不能被真正的使用在生產環境中,從而漸漸的對這個課題失去興趣。
而另一個可能的結果是主流的數據庫系統正式開始采用這些機器學習模型,并且性能有了很大的提升。
因此回答「能否把基于 ML 的某模塊 X(Learned X)落地于數據庫產品中?」這個問題至關重要。
近期,SFU(西蒙菲莎大學)的數據庫團隊發表了一篇實驗分析論文,從「Cardinality Estimation(基數估計)」這個角度對問題進行了回答。
論文發表于數據庫頂級會議 VLDB 上,并獲得會議的 EA&B (Experiment, Analysis and Benchmark) 最佳論文。
論文標題:
Are We Ready For Learned Cardinality Estimation?
論文鏈接:
http://www.vldb.org/pvldb/vol14/p1640-wang.pdf
Github:
https://github.com/sfu-db/AreCELearnedYet
引言
數據庫優化器(Query Optimizer)是數據庫最重要的模塊之一,他決定了 SQL 語句的查詢計劃(Query Plan)的選擇,并直接影響甚至決定查詢速度。
簡單來說,基數估計(Cardinality Estimation)的目的是在不用執行 SQL 查詢的情況下,預測查詢可能返回的行數。
例如:一個簡單的 SQL 語句:
SELECT * FROM DB WHERE A = 1;
基數估計就是在估計下列查詢的結果:
SELECT COUNT(*) FROM DB WHERE A = 1;
查詢優化器使用基數估計結果來生成最佳查詢計劃。通過更準確的估計,查詢優化器通常可以更好地生成更優查詢計劃。
但是基數估計卻是數據庫優化器的「阿喀琉斯之踵」,也是本文的研究重點。這個問題已經被研究了超過三十年,卻依舊沒有被完全解決。
Query Optimizer的原理
研究目的和貢獻
近年來,有越來越多的研究開始采用機器學習或深度模型學習來預測基數,并且在準確度上展現了超越傳統數據庫中基數估計方法的極大潛能。
但是,能否把 Learned Cardinality Estimation 方法應用到數據庫的生產環境中?
答案并不明確。
為此,本文從三個角度回答了上面提出的問題:
1. Are Learned Methods Ready For Static Environments?
2. Are Learned Methods Ready For Dynamic Environments?
3. When Do Learned Methods Go Wrong?
本文全面比較了近年來 Learned Cardinality Estimation 方法。統一了不同方法的實驗環境,詳盡的回答了以上問題,并指出了未來的研究方向。
主要實驗
3.1 實驗方法分類
本文調研了近年來發表在數據庫頂級會議中的 7 種機器學習方法,并把這些方法分為兩類:
Learned Cardinality Estimation 方法分類
(1)Query Driven (Regression) Models: 這類方法把基數估計問題理解為回歸問題,通過建立回歸模型預測基數。
在訓練集中,把特征化的 SQL 語句和其查詢結果分別作為特征和標簽,從而獲得模型。在預測時,輸入特征化的 SQL 語句即可獲得預測的結果。
(2)Data Driven (Joint Distribution) Models: 這類方法把基數估計理解為對數據本身的聯合概率分布的估計。
在訓練時,估計數據的聯合概率分布。在預測時,SQL query 是針對該分布的查詢,從而給出預測結果。
3.2 數據集的選擇
由于現有的不同的方法,在不同的數據集上進行比較,沒有統一標準。本文選擇了 4 個真實數據集,他們大小、行數、列數均不相同,且至少被上述論文引用一次。
數據集具體信息
3.3 查詢生成框架
由于不同的論文用不同的方式生成查詢,本文綜合考慮后,提出了統一的生成框架。(# predicate 是 SQL where 中的斷言數量,Operators 是 where 中是否考慮了“=”和“區間”,OOD 是指查詢是否會查數據中不存在的數據)。
其中,統一的 test set 是 10K 個查詢。對于 Query Driven Models,training set 的大小是 100K。
查詢負載的區別
3.4 實驗度量(metric)
實驗中采用基數估計常用的 metric——Q_error。
也就是實際值和估計值的最大值和最小值的比。越接近 1,說明估計越準確。
Q_error
Are Learned Methods Ready For Static Environments?
作者在靜態環境(數據庫中的數據不更新)中從準確度以及效率(包括訓練時間和推斷時間)兩個方面對基于學習的基數估計方法以及傳統方法進行了比較。
本文選取了 3 個廣泛應用的數據庫產品和 6 個常用以及最新的傳統基數估計方法作為基準。
并且選擇了上述 4 個常用的且具有不同屬性的數據集和統一的查詢負載生成框架,并通過它來生成需要的訓練和測試集。
準確度比較(Error越小越好)
現象:
1. Naru 的準確度是最好的;
2. 最新的機器學習方法整體比傳統方法更準確。
4.1 訓練時間比較(以 Power 數據集為例)
下圖展示了不同方法完成訓練所需要的時間。
訓練時間的差異
現象:
所有的數據庫,都可以在幾秒內完成統計信息的更新,而機器學習方法中,只有 LW-XGB 有可比性,其余的甚至可以慢到 1000 倍以上。
4.2 推斷時間比較(以Power數據集為例)
下圖展示了不同方法,平均完成一次推斷所需要的時間。
預測時間的差異
現象:
所有的數據庫,都有毫秒級的響應速度,而機器學習方法中,只有 Regression 方法有可比性,其余的可以慢 30 倍以上。
主要結論:基于機器學習的方法在準確率上相比于傳統方法有比較大的提升。然而相比于傳統方法,除了 LW-XGB 以外,機器學習方法需要更多的時間去訓練模型,同時在模型運行的時候也會更慢。
Are Learned Methods Ready For Dynamic Environments?
在現實的生產環境中,數據庫中的數據是會經常發生變化的。
設計本實驗的難點是需考慮數據更新帶來的多方面變化:
1. 數據方面
(1)數據的更新頻率;
(2)數據的變化。
2. 模型方面
(1)不同模型的更新方式;
(2)模型更新花費的時間;
(3)在模型更新前后的準確率有變化的情況下,綜合地測量準確率。
因此,本文在實驗的第二部分中設計并引入了一個動態的框架來更加公平的比較機器學習方法和現有的數據庫產品。部分結果如下:
當我們設定數據更新頻率較高時,檢測模型能否完成更新,結果如下圖:
限定模型更新時間時,能否完成更新
現象:當更新頻率較高時,大多數機器學習方法不能跟上頻繁的更新,而大多數情況下,數據庫都可以完成更新。
當我們設定數據更新頻率特別低,并保證所有的機器學習方法都可以完成更新時,比較不同方法的準確度排序(1 最好,5 最差),結果如下圖:
現象:當所有的機器學習方法都可以完成更新時,沒有哪個方法可以在不同數據集上始終最好。
主要結論:機器學習方法需要更久的時間去更新模型,因此往往會跟不上數據更新的速度。與此同時,不同機器學習方法的估計誤差在不同的數據集上有所差異,并沒有一個顯著的最優方法。
When Do Learned Methods Go Wrong?
機器學習和深度學習模型相較于傳統啟發式方法的一個劣勢在于他們相對來說更難被人直觀的理解和解釋。
這也導致很難預估他們什么時候會表現不好,從而導致用戶難以真正的信任和使用它們。
作者還發現了一些模型的不符合邏輯的行為,舉例如下:
1. 估計結果不單調。如下兩個查詢:
可見,Q1 的查詢范圍大于 Q2,所以符合邏輯的結果應該是 Q1 的估計結果 >= Q2 的估計結果。然而,在實際實驗結果中,Q2 卻比 Q1 大了超過 60%。
2.?估計結果不穩定。同一個查詢,重復執行 2000 次的分布圖如下:
同一個查詢的估計結果范圍從 0 到 6000,這樣的估計結果會導致系統的表現不穩定,從而影響人們對系統的信任。
主要結論:黑箱模型導致了無法解釋誤差的來源且結果難以預測。
論文結論
問:能否把基于 ML 的模塊 X(Learned X)落地于數據庫產品中?
?
答:暫時還不行。
雖然目前基于機器學習的基數估計方法還不能夠投入使用,但是他們表現了在準確度上面的潛力以及對數據庫優化器可能帶來的巨大的影響力。
為了能夠真正的把它們部署到真實的數據庫產品中,作者認為未來需要重點解決兩個問題:
1. 提升模型訓練和查詢速度
當前大部分的機器學習模型與數據庫產品相比,訓練和查詢時間都有較大差距,同時針對模型本身的參數調優也會花費數據庫管理員的時間和精力。
由于更新速度過慢,很多準確度很高的模型無法處理高速變化的數據。
因此提升模型的訓練以及查詢速度是部署該類方法到數據庫產品中的重要前提。
2. 提升模型可解釋性
現有的基于學習模型的方法大多基于復雜的黑盒模型,很難預測它們何時會出問題,而且如果出現問題也難以調試。
本文在實驗中也展示了它們的一些不符合邏輯的行為,這些都會成為把它們投入到真實使用中的障礙。
因此,提升模型解釋性在將來會是一個非常重要的課題,作者認為一方面可以從研究更為透明的模型入手,另一方面也可以投入更多的精力在模型解釋和調試中。
關于作者
王笑盈、曲昌博、吳畏遠,在讀博士,西蒙菲莎大學。?
王健楠,副教授,西蒙菲莎大學?
2013年在清華大學獲得博士學位,并于2013年至2015年在加州大學伯克利分校AMPLab進行博士后的研究。曾獲2020年加拿大計算機協會授予的杰出青年獎,2018年IEEE授予的數據工程新星獎,2016年ACM SIGMOD最佳演示獎,2013年CCF最佳博士論文獎,2011年Google PhD Fellowship。?
周慶慶,騰訊。
參考文獻
[1]?http://www.vldb.org/pvldb/vol14/p1640-wang.pdf
[2]?https://mp.weixin.qq.com/s/6ndxLWBTXkJQnBz_dNtYRQ
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
?????稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 武汉到北海开车油费多少?
- 下一篇: 概率视角下的线性模型:逻辑回归有解析解吗