乾貨:阿里大牛淺談MySQL架構體系

JAVA架構發表於2019-06-27

一 : 資料庫和資料庫例項

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

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

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

如上定義很清楚了,資料庫是用來儲存資料的,資料庫例項是用來運算元據的,從作業系統的角度,資料庫例項表現為一個程式,對應多個執行緒,

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

二:  MySQL基架

 對於MySQL來說,雖然經歷了多個版本迭代(MySQL5.5,MySQL 5.6,MySQL 5.7,MySQL 8),但每次的迭代,都是基於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架構體系

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

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

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

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

(三)連線池元件(Connection Pool)

負責監聽對客戶端向MySQL Server端的各種請求,接收請求,轉發請求到目標模組。每個成功連線MySQL Server的客戶請求都會被

建立或分配一個執行緒,該執行緒負責客戶端與MySQL Server端的通訊,接收客戶端傳送的命令,傳遞服務端的結果資訊等。

(四)SQL介面元件(SQL Interface)

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

(五)查詢分析器元件(Parser)

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

(六)最佳化器元件(Optimizer)

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

(七)快取主件(Caches & Buffers)

快取和緩衝元件

(八)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架構體系

(九)物理檔案(File System)

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

三 :一個查詢流程圖


乾貨:阿里大牛淺談MySQL架構體系


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912582/viewspace-2649007/,如需轉載,請註明出處,否則將追究法律責任。

相關文章