MySQL底層架構大揭祕,遠不止寫SQL那麼簡單!

狸貓技術窩發表於2019-05-25

一 、資料庫和資料庫例項

在MySQL的學習研究中,存在兩個非常容易混淆的概念,即資料庫和資料庫例項。

在MySQL中,資料庫和資料庫例項定義如下:

  • 資料庫:儲存資料的集合;

  • 資料庫例項:運算元據庫的集合。

如上定義很清楚了,資料庫是用來儲存資料的,資料庫例項是用來運算元據的

從作業系統的角度,資料庫例項表現為一個程式,對應多個執行緒.

在非叢集資料庫架構中,資料庫與資料庫例項存在一 一對應關係,在資料庫叢集中,可能存在多個資料庫例項操作一個資料庫情況,即多對一關係。


二 、MySQL基架

對於MySQL來說,雖然經歷了多個版本迭代,但每次的迭代,都是基於MySQL基架的。

MySQL基架大致包括如下幾大模組元件:

  1. MySQL向外提供的互動介面(Connectors)

  2. 管理服務元件和工具元件(Management Service & Utilities)

  3. 連線池元件(Connection Pool)

  4. SQL介面元件(SQL Interface)

  5. 查詢分析器元件(Parser)

  6. 優化器元件(Optimizer)

  7. 快取主件(Caches & Buffers)

  8. 外掛式儲存引擎(Pluggable Storage Engines)

  9. 物理檔案(File System)

MySQL底層架構大揭祕,遠不止寫SQL那麼簡單!


1.MySQL向外提供的互動介面(Connectors)

Connectors元件,是MySQL向外提供的互動元件,如java,.net,php等語言可以通過該元件來操作SQL語句,實現與SQL的互動。

2.管理服務元件和工具元件(Management Service & Utilities)

提供對MySQL的整合管理,如備份(Backup),恢復(Recovery),安全管理(Security)等

3.連線池元件(Connection Pool)

負責監聽對客戶端向MySQL Server端的各種請求,接收請求,轉發請求到目標模組。

每個成功連線MySQL Server的客戶請求都會被建立或分配一個執行緒,該執行緒負責客戶端與MySQL Server端的通訊,接收客戶端傳送的命令,傳遞服務端的結果資訊等。

4.SQL介面元件(SQL Interface)

接收使用者SQL命令,如DML,DDL和儲存過程等,並將最終結果返回給使用者。

5.查詢分析器元件(Parser)

首先分析SQL命令語法的合法性,並嘗試將SQL命令分解成資料結構,若分解失敗,則提示SQL語句不合理。

6.優化器元件(Optimizer)

對SQL命令按照標準流程進行優化分析。

7.快取主件(Caches & Buffers)

快取和緩衝元件

8.MySQL儲存引擎

1.什麼是MySQL儲存引擎?

MySQL屬於關係型資料庫,而關係型資料庫的儲存是以表的形式進行的,對於表的建立,資料的儲存,檢索,更新等都是由MySQL儲存引擎完成的,這也是MySQL儲存引擎在MySQL中扮演的重要角色。

研究過SQL Server和Oracle的讀者可能很清楚,這兩種資料庫的儲存引擎只有一個,而MySQL的儲存引擎種類比較多,如MyISAM儲存引擎,InnoDB儲存引擎和Memory儲存引擎.

MySQL之所以有多種儲存引擎,是由MySQL的開源性決定的。MySQL儲存引擎從種類上來說,大致可歸結為官方儲存引擎和第三方儲存引起。

MySQL的開源性,允許第三方基於MySQL骨架,開發適合自己業務需求的儲存引擎。

2.MySQL儲存引擎作用

MySQL儲存引擎在MySQL中扮演重要角色,其作比較重要作用,大致歸結為如下兩方面:

作用一:管理表建立,資料檢索,索引建立等

作用二:滿足自定義儲存引擎開發。

3.MySQL引擎種類

不同種類的儲存引擎,在儲存表時的儲存引擎表機制也有所不同,從MySQL儲存引擎種類上來說,可以分為官方儲存引擎和第三方儲存引擎。

當前,也存在多種MySQL儲存引擎,如MyISAM儲存引擎,InnoDB儲存引擎,NDB儲存引擎,Archive儲存引擎,Federated儲存引擎,Memory儲存引擎,Merge儲存引擎,Parter儲存引擎,Community儲存引擎,Custom儲存引擎和其他儲存引擎。

其中,比較常用的儲存引擎包括InnoDB儲存引擎,MyISAM儲存引擎和Momery儲存引擎。

4.幾種典型MySQL儲存引擎比較

MySQL底層架構大揭祕,遠不止寫SQL那麼簡單!

9.物理檔案(File System)

實際儲存MySQL 資料庫檔案和一些日誌檔案等的系統,如Linux,Unix,Windows等。


三、一個查詢流程圖


MySQL底層架構大揭祕,遠不止寫SQL那麼簡單!


四、參看文獻

【01】MySQL權威指南 (美)Paul Dubois著 楊濤 楊曉雲 王群 等譯

【02】MySQL技術內幕 InnoDB儲存引擎 姜承堯著

【03】SQL學習指南 (美)Alan Beaulieu 著

作者:Alan

來源:https://www.cnblogs.com/wangjiming/p/10410904.html


End

長按下圖二維碼,即刻關注【狸貓技術窩】

 阿里、京東、美團、位元組跳動 頂尖技術專家坐鎮 

為IT人打造一個 “有溫度” 的技術窩!

MySQL底層架構大揭祕,遠不止寫SQL那麼簡單!


相關文章