查詢執行模式
云原生數據倉庫AnalyticDB MySQL版數倉版支持Interactive和Batch兩種查詢模式,結合資源組功能可實現混合負載。
背景
云原生數據倉庫AnalyticDB MySQL版(簡稱AnalyticDB for MySQL版),是阿里巴巴自主研發的海量數據實時高并發在線分析云計算服務,可以對海量數據進行即時的多維分析透視和業務探索。AnalyticDB for MySQL的執行引擎是MPP DAG的融合執行引擎,能夠充分利用內存進行極速計算。分析型查詢的負載比較多樣化,既有低延遲實時分析查詢,也有高吞吐的清洗類查詢(Extract-Transform-Load)。基于全內存的計算,實時分析查詢可以獲得比較低的查詢延遲。而清洗類查詢對查詢延遲要求不高,期望更低的處理成本,更高的處理吞吐。
為此AnalyticDB for MySQL數倉版在原有的Interactive執行模式(全內存計算)之上,推出了新的Batch執行模式。相比較于全內存計算的Interactive模式,Batch模式可以對查詢的任務進行分批執行,每個子任務在內存不足的情況下,自適應地將內存數據換出到磁盤,降低數據計算的成本,提升數據處理的容量上限。
Interactive模式
AnalyticDB for MySQL接收到用戶查詢后,會對查詢進行解析,由優化器生成執行計劃,執行引擎接收到執行計劃后,會生成對應的分布式執行任務,這些分布式執行任務會根據執行計劃描述的邏輯進行計算。執行引擎負責調度、管理這些分布式執行任務。
在Interactive模式下,一個查詢的所有分布式執行任務會被同時調度執行,每個任務完全基于內存進行計算,數據以流水線的方式在上下游任務之間進行流轉。
適用場景:適用于對延遲敏感的實時分析查詢。
Batch模式
在Batch模式下,執行引擎會根據分布式執行任務間的依賴關系,對任務進行分批調度執行。每個任務進行計算時,當內存不足時,會自適應把數據換出到磁盤提升數據處理的容量上限。計算產生的中間結果數據,也會寫入到磁盤中。當下游任務被調度執行時,會從磁盤讀取中間結果數據并進行計算。
適用場景:適用于執行時間長、計算數據量大的查詢。例如:清洗類查詢(Extract-Transform-Load)。
默認執行模式
版本 | 產品系列 | 默認執行模式 | 是否支持Batch模式 |
數倉版 | 預留模式 | Interactive | 否 |
彈性模式 | 是 |
切換執行模式
切換實例的執行模式:
切換實例的執行模式為Interactive模式:
set adb_config query_type=interactive
切換實例的執行模式為Batch模式:
set adb_config query_type=batch
說明一般情況下,不建議將實例級別的執行模式切換為Batch,您可在查詢級別、或資源組級別將執行模式切換為Batch。
切換資源組的執行模式,請參見修改資源組。
混合負載
AnalyticDB for MySQL的資源組功能提供了實例內部多租戶的能力。通過將查詢執行模式與資源組相結合,您可以對實例內部的不同資源組設置不同的查詢執行模式,從而具備一個實例內部同時處理不同查詢負載的混合負載能力。詳情請參見資源組介紹。