文章目錄
- 前言
- 一、MySQL的框架有幾個組件, 各是什么作用?
- 二、執行器的執行查詢陳述句的流程是什么樣的
- 總結
前言
把 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:此圖來自于極客時間

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/182349.html
標籤:其他
上一篇:hibernate
