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