「分散式技術專題」三種常見的資料庫查詢引擎執行模型

Hubble資料庫發表於2023-02-13
一、迭代模型/火山模型(Iterator Model)

又稱 Volcano Model 或者 Pipeline Model。

「分散式技術專題」三種常見的資料庫查詢引擎執行模型


Iterator Model
該計算模型將關係代數中每一種操作抽象為一個 Operator,將整個 SQL 構建成一個 Operator 樹,查詢樹自頂向下的呼叫next()介面,資料則自底向上的被拉取處理。

火山模型的這種處理方式也稱為拉取執行模型(Pull Based)。

大多數關係型資料庫都是使用迭代模型的,如 SQLite、MongoDB、Impala、DB2、SQLServer、Greenplum、PostgreSQL、Oracle、MySQL 等。

火山模型的 優點在於:簡單,每個 Operator 可以單獨實現邏輯。

火山模型的 缺點:查詢樹呼叫next()介面次數太多,並且一次只取一條資料,CPU 執行效率低;而 Joins, Subqueries, Order By 等操作經常會阻塞。

二、物化模型(Materialization Model)

「分散式技術專題」三種常見的資料庫查詢引擎執行模型 Materialization Model
物化模型的 處理方式是:每個 operator 一次處理所有的輸入,處理完之後將所有結果一次性輸出。

物化模型更適合OLTP負載,這些查詢每次只訪問小規模的資料,只需要少量的函式呼叫。


三、向量化/批處理模型(Vectorized / Batch Model)
Batch Model
向量化模型 和 火山模型 類似,每個 operator 需要實現一個 next() 函式,但是每次呼叫 next() 函式會返回一批的元組(tuples),而不是一個元組,所以向量化模型也可稱為批處理模型。

向量化模型是火山模型和物化模型的折衷。

向量化模型比較適合 OLAP 查詢,因為其大大減少了每個 operator 的呼叫次數,也就簡單減少了虛擬函式的呼叫。
Presto、snowflake、SQLServer、Amazon Redshift等資料庫支援這種處理模式。

Spark 2.x 的 SQL 引擎開始也支援向量化執行模型。

在 Hive 中使用 向量化執行的方式:

1、必須以 ORC 格式來儲存資料;

2、將 hive.vectorized.execution.enabled 引數設定為 true。

以上為三種常見的資料庫查詢引擎執行模型, 「分散式技術專題」是國產資料庫 hubble團隊精心整編,專題會持續更新,歡迎大家保持關注。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026685/viewspace-2934987/,如需轉載,請註明出處,否則將追究法律責任。

相關文章