Mysql 邏輯架構介紹

語言: CN / TW / HK

highlight: a11y-dark theme: v-green


這是我參與11月更文挑戰的第5天,活動詳情檢視:2021最後一次更文挑戰

一、整體架構圖

image-20210905162409371

MySql和其它資料庫相比,它的優勢在於它的架構可以在多種不同場景中應用並且發揮良好。

這一點主要體現在引擎層上,MySql的引擎是可拔插式的,業務處理和引擎是分離的,因此可以根據不同的業務需求選擇不同的引擎來進行處理,甚至現有的引擎都不符合你的需求,你可以定製MySql引擎。

二、架構各層介紹

2.1、連線層

主要是完成一些類似於連線處理、授權認證、及相關的安全方案等處理,包含本地 sock 通訊和大多數基於客戶端/服務端工具實現的類似於 tcp/ip 的 通訊。

執行緒池的概念就是為通過安全認證接入的客戶端提供執行緒。

2.2、服務層

服務層平常也稱之為邏輯處理層。服務層主要包含以下幾點:

| 元件名 | 解釋 | | -------------------------------- | ------------------------------------------------------------ | | Management Serveices & Utilities | 系統管理和控制工具 | | SQL Interface | SQL 介面。接受使用者的 SQL 命令,並且返回使用者需要查詢的結果。比如 select from 就是呼叫 SQL Interface。 | | Parser | SQL 解析器。SQL 命令傳遞到解析器的時候會被解析器驗證和解析。 | | Optimizer | SQL 查詢優化器。SQL 語句在查詢之前會使用查詢優化器對查詢進行優化,比如有 where 條件時,優化器來決定先投影還是先過濾。 | | Cache & Buffer | SQL 查詢快取。如果查詢快取有命中的查詢結果,查詢語句就可以直接去查詢快取中取 資料。這個快取機制是由一系列小快取組成的。比如表快取,記錄快取,key 快取, 許可權快取等 |

2.3、引擎層

儲存引擎層,儲存引擎真正的負責了 MySQL 中資料的儲存和提取,伺服器通過 API 與儲存引擎進行通訊。因為MySql的引擎是可拔插式的,我們在使用時可根據不同的業務場景可選擇不同的引擎。

在mysql官網上對於自定義儲存引擎也有所介紹。編寫自定義儲存引擎

2.4、資料儲存層

這個就是我們平常所說的物理儲存啦,主要就是把資料儲存到執行mysql的伺服器中的檔案系統中,並且能夠完成和儲存引擎的互動。

後文

踩坑篇今天還沒寫出來,先發個存稿,明天繼續肝。

紙上得來終覺淺,絕知此事要躬行。

大家好,我是博主寧在春主頁

一名喜歡文藝卻踏上程式設計這條道路的小青年。

希望:我們,待別日相見時,都已有所成

學習視訊:B站周陽老師MySQL進階