關聯式資料庫 Query_Execution

虾野百鹤發表於2024-11-12

關聯式資料庫 Query Execution 的流程

在關係型資料庫中, 一條 Query 語句執行的流程如下:
DBMS將Quey語句翻譯成特定的內部抽象語言, 通常有兩種 Query Plan

  1. logical Plan: 使用關係代數描述 Query Plan, 描述關係運算子或者非關係運算子
  2. physical: 描述這些運算子的實際動作

Query 處理的三個階段

  1. 解析以及重寫 Query, SQL->logical plan
  2. Query 語言最佳化
    logical plan -> 最佳化的 logical plan -> physical plan
  3. Query Execution: 在資料庫中執行這個 physical plan

Processing Model

Processing Model 在解析節點不起直接作用, 起作用的主要階段是最佳化節點(Optimization), 最佳化器會根據資料庫的統計資訊(如表大小, 索引情況)和 SQL 查詢條件, 生成一個最優的執行計劃, 這裡可能包括選擇最合適的索引, 決定連線方式等, 以儘量減少資源消耗和提升查詢速度.
Processing Model 在這個階段開始生效, 幫助定義 SQL 最佳化器在構建執行計劃時如何考慮資料的儲存和讀取方式.

根據呼叫資料庫運算子順序的不同, 我們通常將 Processing Model 分為兩類, 分別是自上而下, 與自下而上的方式, 類似於語言編譯的流程.
常見的三種Execution模型是:

  1. Iterator Model
  2. Materialization Model
  3. Vectorized / Batch Model

Iterator Model

Iterator Model:
簡單點說, 每次處理一行, 儘可能地將這一行的所有操作處理完, 同時, 假設A行還沒有處理完, 可以開始處理B行, 同時處理多行資料的方式稱為 Pipeline

相關文章