一 .MySQL 基礎(chǔ)架構(gòu)分析
介紹一下下圖涉及的一些組件的基本作用幫助大家理解這幅圖。
- 連接/線程處理(連接器): 身份認(rèn)證和權(quán)限相關(guān)(如連接處理、授權(quán)認(rèn)證、安全等等)。
- 查詢緩存: 執(zhí)行查詢語句的時候,會先查詢緩存(MySQL 8.0 版本后移除)。
- 解析器: 沒有命中緩存的話,SQL 語句就會經(jīng)過解析器,MySQL會解析查詢,并創(chuàng)建內(nèi)部數(shù)據(jù)結(jié)構(gòu)(解析樹)
? 就是要先看你的 SQL 語句要干嘛,再檢查 SQL 語句語法是否正確。 - 優(yōu)化器: 按照 MySQL 認(rèn)為最優(yōu)的方案去執(zhí)行。比如對其進(jìn)行各種優(yōu)化,包括重寫查詢、決定表的讀取順序,以及選擇合適的索引等。
- 執(zhí)行器: 執(zhí)行語句,然后從存儲引擎返回數(shù)據(jù)。
簡單來說 MySQL 主要分為 Server 層和存儲引擎層:
Server 層:主要包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器等,所有跨存儲引擎的功能都在這一層實現(xiàn),比如存儲過程、觸發(fā)器、視圖,函數(shù)等,還有一個通用的日志模塊 binglog 日志模塊。
存儲引擎: 主要負(fù)責(zé)數(shù)據(jù)的存儲和讀取,采用可以替換的插件式架構(gòu),支持 InnoDB、MyISAM、Memory 等多個存儲引擎,其中 InnoDB 引擎有自有的日志模塊 redolog 模塊?,F(xiàn)在最常用的存儲引擎是 文章來源:http://www.zghlxwxcb.cn/news/detail-776214.html
二.總結(jié)
MySQL 主要分兩個層面一個為 Server 層和引擎層,Server 層主要包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器,同時還有一個日志模塊(binlog),這個日志模塊所有執(zhí)行引擎都可以共用,redolog 只有 InnoDB 有。
引擎層是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。
SQL 等執(zhí)行過程分為兩類,一類對于查詢等過程如下:權(quán)限校驗—》查詢緩存—》分析器—》優(yōu)化器—》權(quán)限校驗—》執(zhí)行器—》引擎
對于更新等語句執(zhí)行流程如下:分析器----》權(quán)限校驗----》執(zhí)行器—》引擎—redo log prepare—》binlog—》redo log commit
來源于:https://blog.csdn.net/weter_drop/article/details/93386581文章來源地址http://www.zghlxwxcb.cn/news/detail-776214.html
到了這里,關(guān)于MySQL面試題:一條SQL語句在MySQL中執(zhí)行過程全解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!