更新時間:2021-01-08 17:37:21 來源:動力節(jié)點 瀏覽1602次
MySQL是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。MySQL能夠有如今的地位,離不開優(yōu)秀的MySQL整體架構(gòu)。
與其他服務(wù)端軟件一樣,MySQL采用的也是C/S架構(gòu),即客戶端(Client)與服務(wù)端(Server)架構(gòu),我們在使用MySQL的時候,都是以客戶端的身份,發(fā)送請求連接到運行服務(wù)端的MySQL守護進程,而MySQL服務(wù)器端則根據(jù)我們的請求進行處理并把處理后的結(jié)果返回給我們。
一、客戶端(Client)
在安裝后MySQL之后,在其安裝目錄的bin目錄下,有一個mysql命令,這就是一般我們所說的MySQL客戶端,不過這是MySQL官方提供的命令行客戶端。
在shell輸入mysql命令,便可以開始連接MySQL服務(wù)器了。
除了MySQL原生的命令行客戶端,其實更常用的還有一些GUI客戶端,比如我們比較用的Navicat,另外還有各種編程語言提供的訪問MySQL的類庫,其實都是連接到MySQL的客戶端。
二、服務(wù)端(Server)
我們所說的MySQL其實更多的時候是指MySQL服務(wù)端,MySQL服務(wù)端是負責(zé)響應(yīng)客戶端請求的守護進程。
MySQL的服務(wù)端大體上可以分為Server層和存儲引擎層,而Server層分別為連接管理、解析與優(yōu)化、查詢優(yōu)化器和執(zhí)行器,而Server層與存儲引擎之間的交互則通過統(tǒng)一的API進行調(diào)用,下面我們來詳細了解MySQL Server的各個組件的功能與作用。
1.連接管理器
連接管理器的作用是管理和維持所有MySQL客戶端的請求連接,當(dāng)我們向MySQL發(fā)起請求時,連接管理器會負責(zé)創(chuàng)建連接并校驗用戶的權(quán)限。
2.查詢緩存
當(dāng)我們與連接器建立連接后,如果我們執(zhí)行的是SELECT語句,那么連接器會先從查詢緩存中查詢,看看之前是否執(zhí)行過這條語句,如果沒有再往走,如果有則判斷相應(yīng)的權(quán)限,符合權(quán)限,則直接返回結(jié)果。
3.解析器
當(dāng)在查詢緩存中沒有命令查詢時,則需要真正執(zhí)行語句,這時候就交給解析器先進行詞法分析,對我們輸入的語句進行拆解,折解后再進行語法分析,判斷我們輸入的語句是不是符合MySQL的語法規(guī)則,如果輸入的語句不符合MySQL語法規(guī)則,則停止執(zhí)行并提示錯誤。
4.查詢優(yōu)化器
我們輸入的語句,經(jīng)過分析器的詞法和語法分析,MySQL服務(wù)器已經(jīng)知道我們要查詢什么了,不過,在開始查詢前,還要交由查詢優(yōu)化器進行優(yōu)化。
在優(yōu)化的過程,優(yōu)化器會根據(jù)SQL語句的查詢條件決定使用哪一個索引,如果有連接(join),會決定表的查詢順序,最終會根據(jù)優(yōu)化的結(jié)果生成一個執(zhí)行計劃交由下面的執(zhí)行器去執(zhí)行。
5.執(zhí)行器
SQL語句在經(jīng)過查詢優(yōu)化器的優(yōu)化后,接下來就交由執(zhí)行器開始執(zhí)行,不過執(zhí)行器在開始執(zhí)行前,會判斷用戶對相應(yīng)的數(shù)據(jù)表是否有權(quán)限。
如果用戶有權(quán)限,則開始調(diào)用數(shù)據(jù),與其數(shù)據(jù)庫不同的,MySQL的數(shù)據(jù)存儲與調(diào)用交由存儲實現(xiàn),當(dāng)我們調(diào)用時,執(zhí)行器通過存儲引擎API向底層的存儲發(fā)送相應(yīng)的指令,存儲引擎負責(zé)具體執(zhí)行,并將執(zhí)行結(jié)果告訴執(zhí)行器,然后再返回給客戶端。
6.存儲引擎
存儲引擎,也叫做表類型,其具體作用便是決定一個數(shù)據(jù)表怎么處理和存儲表中的數(shù)據(jù),MySQL支持多種不同的存儲引擎,而且存儲引擎被設(shè)計為可插拔式的,在同一個數(shù)據(jù)庫中,不同的數(shù)據(jù)表可以使用不同的存儲引擎。
以上就是MySQL整體架構(gòu),也算是大致對MySQL的工作原理和機制有了初步的了解。MySQL整體架構(gòu)和MySQL的功能是相輔相成的,想要深入學(xué)習(xí)的小伙伴快去觀看本站的MySQL教程吧。