Join Query Optimization with Deep Reinforcement Learning Algorithms

Jackson_rw發表於2020-12-27

動機

 查詢優化已經進行幾十年的研究了,而連線順序選擇又是查詢優化中的一個非常重要的問題。連線順序選擇是一個NP-hard問題,隨著連線關係數量的線性增加,而連線順序呈現指數級增長。(1)傳統資料庫採用動態規劃的方法,再加上一些限定規則進行修剪搜尋空間,避免窮舉所有可能的連線順序,但是也會消耗許多資源,而且這些限定規則往往是基於專家經驗,需要手工設計和頻繁維護。同時也降低了在更大的搜尋空間找到更好的計劃的可能。(2)傳統資料庫採用的成本模型,基於傳統的基數估計,而基數估計中,屬性往往是採取獨立性假設,但是真實世界的資料庫,各個屬性並不是完全獨立,相反,還具有高度的相關性,所以,這樣會導致,成本模型估算不準確。最終導致次優的執行計劃。(3)傳統的資料庫優化器不會從過去執行過的糟糕計劃中學習教訓,吸取經驗,從而下次執行依然不能避免糟糕的計劃,雖然早在多年前Leo就提出了學習型優化器,不過這些方法並沒有廣泛採用。

貢獻

總體概況

 最近,提出了將機器學習引入資料庫領域,取得了不錯的進展,可替代傳統的查詢優化器元件。於是,基於Rejoin、DQ提供的思想,本文提出了一種通用的連線順序優化器架構FOOP,可以結合不同的深度強化學習演算法進行直接對比。FOOP主要可以觀察查詢優化過程中所有關係和中間執行計劃。

具體點

(1)FOOP將連線順序選擇問題表達為可觀察的強化學習過程,而且將FOOP獨立於資料庫系統,處於應用層,直接跟蹤所有關係和中間執行計劃。
(2)由FOOP框架,首次直接比較,各種DRL演算法在查詢優化中的效能。
(3)FOOP使用時間複雜度較低的優化演算法生成的查詢計劃與傳統優化器生成的查詢計劃,在成本模型中估計值相當。

背景

查詢優化領域文獻

  1. 查詢優化仍未解決
    (1)Is query optimization a solved problem

  2. 傳統資料庫優化方法
    (2)System R
    (3)Vulcano
    (4)Leo

  3. 引入新的查詢基準
    (5)How good are query optimizers, really?

  4. 機器學習改進基數估計
    (6)Neural network-based approaches for predicting query response times.
    (7) Towards predicting query execution time for concurrent and dynamic database workloads.
    (8)Learning-based query performance modeling and prediction.
    (9)Predicting multiple metrics for queries: Better decisions enabled by machine learning.
    (10)Robust estimation of resource consumption for sql queries using statistical techniques.
    (11)Wisedb: a learning-based workload management advisor for cloud databases.

  5. 強化學習改進優化
    (12)Database meets deep learning: challenges and opportunities.
    (13)Towards a hands-free query optimizer through deep learning.(DQ擴充套件)
    (14)Learning state representations for query optimization with deep reinforcement learning.(狀態如何表示)
    (15)Skinnerdb: regret-bounded query evaluation via reinforcement learning.
    (16)Neo: A learned query optimizer.(Neo)——借鑑(Mastering the
    game of go with deep neural networks and tree search.)
    (17)DQN應用於查詢優化——借鑑(Playing atari with deep reinforcement learning. arXiv preprint)
    (18)Rejoin和DQ均依賴傳統成本模型。DQ加入微調機制。DQN和PG比Neo的DNN訓練時間更短。

查詢優化為什麼是一個仍未解決的問題

  1. 查詢優化目標:將SQL轉換為高效的執行計劃
  2. 連線順序選擇是查詢優化重難點,連線順序選擇本質搜尋最佳排序,最佳意味著成本估算達到最低。
  3. 一般來說,n個關係進行排序,時間複雜度為O(n!),
  4. 連線順序還需要考慮到物理運算子,那麼這個複雜度將會大大增加
  5. 對於n個關係,可以得到二叉查詢樹數量為(2*n-1)!/((n-1)!*n!),例如:
    在這裡插入圖片描述
    在這裡插入圖片描述
  6. 以上僅僅是查詢二叉樹的形狀數量,每一顆二叉樹的結點還有不同的排列組合,這樣一來複雜性很大。更不用說,諸如選擇,投影之類的問題,再加上,複雜度極高。
  7. 一般來說,查詢優化的連線順序選擇通常使用n!評估,但是n!的複雜性也高,即也是一個NP難問題。因此需要設計優化演算法減小搜尋空間,動態規劃加上一系列限定規則可以做到,但是,不能保證未搜尋空間一定不存在最優計劃,換句話說有可能找到的是次優計劃,那麼仍需要進行研究新演算法,減少時間複雜度。
  8. 查詢優化器的架構主體由執行計劃器和成本估算模型組成。
  9. 計劃器是主體模組,功能是列出並檢查所有可能的查詢計劃,然後根據特定的成本模型選擇最佳方案。其中的問題是列出所有可能的查詢計劃,搜尋空間過大,時間複雜度太高,也是一個NP難問題。為了解決這個問題,通常是啟發式方法。例如動態規劃結合特定規則減少搜尋空間、若查詢過大,則再加上貪婪演算法、遺傳演算法。然後,再為了降低複雜度,只用左深查詢樹。
  10. 成本模型含義是指關於資料庫的不同假設和統計資料,進而評估查詢計劃的總體成本。成本模型主要包括CPU估計、I/O估計、基數估計。特別是,基數估計是在簡單情況下,例如對於基表,使用分位數統計、頻率分析、不同的計數規則進行預測。

查詢優化中主要未解決問題

  1. 查詢計劃的限制性問題
     原因:窮舉耗時;解決:傳統優化器只使用左深樹;結果:降低時間複雜度至O(n!);不足:減少了搜尋空間,降低找到最優方案的機會。深入:一般情況,左深接近最優,但對於複雜(大量連線關係)查詢的分析型資料庫,左深反而是次優。
  2. 查詢優化的基準問題
     原因:評估查詢優化器的基準的列值均勻分佈且獨立分佈,而真實世界資料庫列值相互關聯且非均勻分佈,因此,基於現有基準進行調整的查詢優化器不能推廣到真實世界,僅為部分優化;解決:採用源自真實世界的基準。
  3. 基數估計的錯誤問題
     原因:分位數統計無法檢測相關列值,無法比較列值,進而作出統計。因此,在非均勻分佈的列值會產生錯誤,進而導致成本模型估算錯誤。

應用於查詢優化的強化學習概念的調整

接下來再進行補充完整~
本文是對《Join Query Optimization with Deep Reinforcement Learning Algorithms》進行闡述。

相關文章