mysql基礎架構

2020-10-20 11:00:56

文章目錄

 


前言

把 MySQL 拆解一下,看看裡面都有哪些「零件」,希望藉由這個拆解過程,可以對 MySQL 有更深入的理解

一、MySQL的框架有幾個元件, 各是什麼作用?

             1.聯結器(負責跟使用者端建立連線、獲取許可權、維持和管理連線)

             2.查詢快取(不建議使用快取,因為只要有更新就會更新快取。關閉快取:引數 query_cache_type 設定成 DEMAND。MySQL8.0已移除此模組)

             3.分析器(進行語法分析、詞法分析,檢查sql的語法順序等得到解析樹, 然後前處理器對解析樹進一步分析,驗證資料表、欄位是否存在,通關之後sql進入下一步優化器)          

             4.優化器(對sql執行計劃分析, 得到最終執行計劃)

             5.執行器(此處會進行許可權驗證,驗證通過後會呼叫儲存引擎API去執行sql,得到響應結果, 將結果返回給使用者端)

             6.儲存引擎(負責資料的儲存和提取,其架構模式是外掛式的。其中InnoDB從MySQL5.5.5 版本開始成為了預設儲存引擎)

二、執行器的執行查詢語句的流程是什麼樣的

        1.呼叫 InnoDB引擎介面取這個表的第一行,判斷 ID 值是不是 10(即條件是否滿足),如果不是則跳過,如果是則將這行存在結果集中;
        2.呼叫引擎介面取「下一行」,重複相同的判斷邏輯,直到取到這個表的最後一行。
        3.執行器將上述遍歷過程中所有滿足條件的行組成的記錄集作為結果集返回給使用者端。

對於有索引的表,執行的邏輯也差不多。第一次呼叫的是「取滿足條件的第一行」這個介面,之後迴圈取「滿足條件的下一行」這個介面,這些介面都是引擎中已經定義好的。


總結

PS:此圖來自於極客時間