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