上圖是筆者根據之前文章梳理出的腦圖,用于快速進行知識復習。
文章鏈接:
MySQL分為Server和存儲引擎層兩部分,其中: Server層包括:連接池、查詢緩存、分析器、優化器、執行器等,涵蓋MySQL的大多數核心服務功能,以及所有的內置函數(如日期、時間、數字和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等; 存儲引擎層負責數據的存儲和提取。其架構模式是插件式,支持InnoDB、MyISAM、Memory等多個存儲引擎,現在最常用的存儲引擎是InnoDB(5.5.5版本后默認存儲引擎)。
果凍布丁兔,公眾號:陸隊長一次搞懂MySQL(1)SQL語句到底是怎么執行的
MySQL的連接器、分析器、優化器和執行器是MySQL的核心組件,它們分別負責不同的功能,如下所述:
-
連接器(Connection Manager):連接器是MySQL的一個獨立組件,用于建立與服務器之間的連接,并負責用戶身份驗證、權限管理和調用其他MySQL模塊來完成用戶請求。一旦連接成功建立,它就會開始扮演協調器的角色,接收來自客戶端的請求,將請求轉發到查詢分析器進行處理,并將結果返回給客戶端。
-
分析器(Parser):查詢分析器從連接器接收SQL語句,并驗證語法和解析其中的各個部分,如表名、列名、運算符和條件等。如果SQL語句不符合MySQL的語法和標準,則查詢分析器將返回錯誤消息。
-
優化器(Optimizer):查詢優化器接收查詢分析器的請求,并選擇執行查詢的最有效計劃。優化器將嘗試找到最佳的執行方案,以便在查詢時最小化資源消耗,同時盡可能快地返回結果。
-
執行器(Executor):查詢執行器將執行優化的查詢計劃,并將結果返回給查詢分析器。如果需要檢索數據,則執行器將訪問存儲引擎,以在磁盤上找到數據并將其返回給查詢分析器。在這個過程中,執行器還會進行權限檢查和事務管理等操作。
這些組件共同協作,完成了MySQL的核心功能,如語法分析、查詢優化、數據管理和權限驗證等操作。MySQL的性能和可靠性得益于這個復雜的體系結構,其中每個組件都有自己獨特的功能和優點。