MariaDB伺服器查詢執行過程的三個階段概述
MariaDB伺服器中,查詢的執行過程大致分為如下3個階段:
(1).從使用者接收SQL語句,切分語句並分析詞法語法,最後生成MariaDB伺服器可以理解的解析樹;
(2).確認SQL語句的解析資訊,選擇從哪個資料表讀取,以及使用哪種索引讀取資料表;
(3).藉助第2步中確定的讀表順序或所選索引,從儲存引擎中獲取資料。
第一個階段通常稱為SQL解析,由MariaDB伺服器的SQL解析器負責處理。若SQL語句存在語法錯誤,則可以在該階段得到檢測。經過SQL解析後,最終形成SQL解析樹。MariaDB伺服器使用SQL解析樹而非SQL語句本身執行查詢。
第二個階段會依據第一個階段形成的SQL解析樹處理如下內容:
(1).刪除不必要的條件,將複合運算簡單化。
(2).若存在多表連線,則確定讀表順序。
(3).根據用於各資料表的條件與索引統計資訊,確定要使用的索引。
(4).將獲取的記錄放入臨時表,確定是否需要再次加工。
第三個階段將依據執行計劃向存戶引擎請求讀取記錄,MariaDB引擎會對從儲存引擎獲得的記錄進行連線、排序等處理。
(1).從使用者接收SQL語句,切分語句並分析詞法語法,最後生成MariaDB伺服器可以理解的解析樹;
(2).確認SQL語句的解析資訊,選擇從哪個資料表讀取,以及使用哪種索引讀取資料表;
(3).藉助第2步中確定的讀表順序或所選索引,從儲存引擎中獲取資料。
第一個階段通常稱為SQL解析,由MariaDB伺服器的SQL解析器負責處理。若SQL語句存在語法錯誤,則可以在該階段得到檢測。經過SQL解析後,最終形成SQL解析樹。MariaDB伺服器使用SQL解析樹而非SQL語句本身執行查詢。
第二個階段會依據第一個階段形成的SQL解析樹處理如下內容:
(1).刪除不必要的條件,將複合運算簡單化。
(2).若存在多表連線,則確定讀表順序。
(3).根據用於各資料表的條件與索引統計資訊,確定要使用的索引。
(4).將獲取的記錄放入臨時表,確定是否需要再次加工。
第三個階段將依據執行計劃向存戶引擎請求讀取記錄,MariaDB引擎會對從儲存引擎獲得的記錄進行連線、排序等處理。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135451/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JS引擎執行緒的執行過程的三個階段JS執行緒
- javascript引擎執行的過程的理解--執行階段JavaScript
- MySQL學習 - 查詢的執行過程MySql
- 如何查詢一個儲存過程是否在執行儲存過程
- 如何在Linux中執行MySQL/MariaDB查詢LinuxMySql
- GaussDB SQL查詢語句執行過程解析SQL
- MySQL 查詢語句執行過程淺析MySql
- 理解索引(中):MySQL查詢過程和高階查詢索引MySql
- MySQL系列之一條SQL查詢語句的執行過程MySql
- javascript引擎執行的過程的理解--語法分析和預編譯階段JavaScript語法分析編譯
- 從Spring的幾個階段理解其工作過程Spring
- 分享一個查詢某個使用者過去一段時間內執行的SQL語句。SQL
- PostgreSQL並行查詢概述SQL並行
- mysql中一條查詢語句的執行全過程是怎樣的?MySql
- C++ 在模板三個階段檢查錯誤C++
- 一條select的查詢的過程
- requestIdleCallback在EventLoop的什麼階段執行?如何執行?OOP
- 大資料的系統學習:大資料學習的三個階段概述大資料
- jsp的執行過程JS
- 指令的執行過程
- 初學Java,這三個階段你經歷過嗎?Java
- MyBatis執行流程的各階段介紹MyBatis
- requestAnimationFrame在EventLoop的什麼階段執行?requestAnimationFrameOOP
- MySQL兩階段提交過程原理簡述MySql
- webpack loader 的執行過程Web
- Redis 命令的執行過程Redis
- sql查詢是如何執行的?SQL
- 多執行緒查詢執行緒
- 執行緒池建立執行緒的過程執行緒
- [求指導] 如何通過程式碼分析一個查詢語句的執行效率
- 一個簡單java程式的執行全過程Java
- 一個 java 檔案的執行過程詳解Java
- 客服系統的三個發展階段
- mysql多條件過濾查詢之mysq高階查詢MySql
- 合同管理的七個基本階段:明確全過程所有要求和目標
- 一條Sql的執行過程SQL
- Javascript中new的執行過程JavaScript
- pgrep查詢正在執行的程式ID
- Java 程式執行過程Java