主要介紹 mysql 的整體架構組成。
學習 mysql 就好比蓋房子,如果想把房子蓋的特別高,地基一定要穩,基礎一定要牢固。學習 mysql 資料庫前要先了解它的體系結構,這是學好 mysql 資料庫的前提。
mysql 由連線池、sql 介面、解析器、優化器、快取、儲存引擎等組成,可以分為三層,即 mysql server 層、儲存引擎層和檔案系統層。mysql server 層又包括連線層和 sql 層。如下是官方文件中 mysql 的基礎架構圖:
mysql基礎架構圖
上圖中,connection pool
為連線層,management services & utilities ...caches & buffers 為 sql
層,pluggable storage engines 為儲存引擎層,file system、files & logs 為檔案系統層。
connectors 不屬於以上任何一層,可以將 connectors 理解為各種客戶端、應用服務,主要指的是不同語言與 sql 的互動。
1. 連線層
應用程式通過介面(如 odbc、jdbc)來連線 mysql,最先連線處理的是連線層。連線層包括通訊協議、執行緒處理、使用者名稱密碼認證 3 部分。
connection pool(連線池)屬於連線層。由於每次建立連線都需要消耗很多時間,連線池的作用就是將使用者連線、使用者名稱、密碼、許可權校驗、執行緒處理等需要快取的需求快取下來,下次可以直接用已經建立好的連線,提公升伺服器效能。
2. sql層
sql 層是 mysql 的核心,mysql 的核心服務都是在這層實現的。主要包含許可權判斷、查詢快取、解析器、預處理、查詢優化器、快取和執行計畫。
management services & utilities、sql inte***ce、parser、optimizer 和 caches & buffers 屬於 sql 層,詳細說明如下表所示。
名稱說明
management services & utilities
mysql 的系統管理和控制工具,包括備份恢復、mysql 複製、集群等。
sql inte***ce(sql 介面)
用來接收使用者的 sql 命令,返回使用者需要查詢的結果。例如 select from 就是呼叫 sql inte***ce。
parser(查詢解析器)
在 sql 命令傳遞到解析器的時候會被解析器驗證和解析,以便 mysql 優化器可以識別的資料結構或返回 sql 語句的錯誤。
optimizer(查詢優化器)
sql 語句在查詢之前會使用查詢優化器對查詢進行優化,同時驗證使用者是否有許可權進行查詢,快取中是否有可用的最新資料。它使用「選取-投影-連線」策略進行查詢。
例如select id, name from student where gender = "女";
語句中,select 查詢先根據 where 語句進行選取,而不是將表全部查詢出來以後再進行 gender 過濾。select 查詢先根據 id 和 name 進行屬性投影,而不是將屬性全部取出以後再進行過濾,將這兩個查詢條件連線起來生成最終查詢結果。
caches & buffers(查詢快取)
如果查詢快取有命中的查詢結果,查詢語句就可以直接去查詢快取中取資料。這個快取機制是由一系列小快取組成的,比如表快取、記錄快取、key 快取、許可權快取等。
3. 儲存引擎層
pluggable storage engines 屬於儲存引擎層。儲存引擎層是 mysql 資料庫區別於其他資料庫最核心的一點,也是 mysql 最具特色的乙個地方。主要負責 mysql 中資料的儲存和提取。
因為在關聯式資料庫中,資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別(即儲存和操作此表的型別)。
4. 檔案系統層
檔案系統層主要是將資料庫的資料儲存在作業系統的檔案系統之上,並完成與儲存引擎的互動。
mysql 體系結構 了解MySQL體系結構
mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...
簡述mysql體系結構 MySQL體系結構
一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...
MySQL體系結構
了解mysql必須牢牢記住其體系結構圖,mysql是由sql介面,解析器,優化器,快取,儲存引擎組成的 1 connectors指的是不同語言中與sql的互動 2 management serveices utilities 系統管理和控制工具 3 connection pool 連線池。管理緩衝使...