W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
SQL 引擎從接受 SQL 請求到執(zhí)行的典型流程如下圖所示:
下表為 SQL 請求執(zhí)行流程的步驟說明。
步驟 | 說明 |
Parser(詞法/語法解析模塊) | 在收到用戶發(fā)送的 SQL 請求串后,Parser 會將字符串分成一個個的“單詞”,并根據(jù)預先設定好的語法規(guī)則解析整個請求,將 SQL 請求字符串轉換成帶有語法結構信息的內存數(shù)據(jù)結構,稱為語法樹(Syntax Tree)。 |
Plan Cache(執(zhí)行計劃緩存模塊) | 執(zhí)行計劃緩存模塊會將該 SQL 第一次生成的執(zhí)行計劃緩存在內存中,后續(xù)的執(zhí)行可以反復執(zhí)行這個計劃,避免了重復查詢優(yōu)化的過程。 |
Resolver(語義解析模塊) | Resolver 將生成的語法樹轉換為帶有數(shù)據(jù)庫語義信息的內部數(shù)據(jù)結構。在這一過程中,Resolver 將根據(jù)數(shù)據(jù)庫元信息將 SQL 請求中的 Token 翻譯成對應的對象(例如庫、表、列、索引等),生成的數(shù)據(jù)結構叫做 Statement Tree。 |
Transfomer(邏輯改寫模塊) | 分析用戶 SQL 的語義,并根據(jù)內部的規(guī)則或代價模型,將用戶 SQL 改寫為與之等價的其他形式,并將其提供給后續(xù)的優(yōu)化器做進一步的優(yōu)化。Transformer 的工作方式是在原 Statement Tree 上做等價變換,變換的結果仍然是一棵 Statement Tree。 |
Optimizer(優(yōu)化器) | 優(yōu)化器是整個 SQL 請求優(yōu)化的核心,其作用是為 SQL 請求生成最佳的執(zhí)行計劃。在優(yōu)化過程中,優(yōu)化器需要綜合考慮 SQL 請求的語義、對象數(shù)據(jù)特征、對象物理分布等多方面因素,解決訪問路徑選擇、聯(lián)接順序選擇、聯(lián)接算法選擇、分布式計劃生成等多個核心問題,最終選擇一個對應該 SQL 的最佳執(zhí)行計劃。 |
Code Generator(代碼生成器) | 將執(zhí)行計劃轉換為可執(zhí)行的代碼,但是不做任何優(yōu)化選擇。 |
Executor(執(zhí)行器) |
|
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: