MySql 整體結構
MySQL 由連接池、SQL 介面、決議器、優化器、快取、存盤引擎等組成,可以分為三層,即 MySQL Server 層、存盤引擎層和檔案系統層,MySQL Server 層又包括連接層和 SQL 層,如下是官方檔案中 MySQL 的基礎架構圖:

上圖中,Connection pool 為連接層,Management Services & Utilities …Caches & Buffers 為 SQL 層,Pluggable Storage Engines 為存盤引擎層,File system、Files & Logs 為檔案系統層,
Connectors 不屬于以上任何一層,可以將 Co?nnectors 理解為各種客戶端、應用服務,主要指的是不同語言與 SQL 的互動,
1. 連接層
應用程式通過介面(如 ODBC、JDBC)來連接 MySQL,最先連接處理的是連接層,連接層包括通信協議、執行緒處理、用戶名密碼認證 3 部分,
- 通信協議負責檢測客戶端版本是否兼容 MySQL 服務端,
-執行緒處理是指每一個連接請求都會分配一個對應的執行緒,相當于一條 SQL 對應一個執行緒,一個執行緒對應一個邏輯 CPU,在多個邏輯 CPU 之間進行切換,
-密碼認證用來驗證用戶創建的賬號、密碼,以及 host 主機授權是否可以連接到 MySQL 服務器,
Connection Pool(連接池)屬于連接層,由于每次建立連接都需要消耗很多時間,連接池的作用就是將用戶連接、用戶名、密碼、權限校驗、執行緒處理等需要快取的需求快取下來,下次可以直接用已經建立好的連接,提升服務器性能,
2. SQL層
SQL 層是 MySQL 的核心,MySQL 的核心服務都是在這層實作的,主要包含權限判斷、查詢快取、決議器、預處理、查詢優化器、快取和執行計劃,
- 權限判斷可以審核用戶有沒有訪問某個庫、某個表,或者表里某行資料的權限,
- 查詢快取通過 Query Cache 進行操作,如果資料在 Query Cache 中,則直接回傳結果給客戶端,不必再進行查詢決議、優化和執行等程序,
- 查詢決議器針對 SQL 陳述句進行決議,判斷語法是否正確,
- 前處理器對決議器無法決議的語意進行處理,
- 查詢優化器對 SQL 進行改寫和相應的優化,并生成最優的執行計劃,就可以呼叫程式的 API 介面,通過存盤引擎層訪問資料,
Management Services & Utilities、SQL Interface、Parser、Optimizer 和 Caches & Buffers 屬于 SQL 層,詳細說明如下表所示,
| 名稱 | 說明 |
|---|---|
| Management Services & Utilities | MySQL 的系統管理和控制工具,包括備份恢復、MySQL 復制、集群等, |
| SQL Interface(SQL 介面) | 用來接收用戶的 SQL 命令,回傳用戶需要查詢的結果,例如 SELECT FROM 就是呼叫 SQL Interface, |
| 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. 檔案系統層
檔案系統層主要是將資料庫的資料存盤在作業系統的檔案系統之上,并完成與存盤引擎的互動,
檔案系統層主要是將資料庫的資料存盤在作業系統的檔案系統之上,并完成與存盤引擎的互動,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/273217.html
標籤:其他
上一篇:web服務器簡介
下一篇:供應鏈業務架構設計概覽
