3分鐘學會mysql數據庫的邏輯架構

這篇文章主要是從mysql數據庫的邏輯架構來認識掌握mysql的原理。只要是稍微有一點計算機的相關知識相信都能看明白。

一、籠統的邏輯架構

先給出一張邏輯架構圖,這張圖是讓你從宏觀的角度來分析認識一下。

3分鐘學會mysql數據庫的邏輯架構

從這張圖你可以獲取到如下的信息:

(1)mysql架構大致上可以劃分為四層。

(2)第一層,主要是不同客戶端的連接。

(3)第二層,主要是處理客戶端的連接。

(4)第三層,處理客戶端的sql語句。

(5)第四層,存儲引擎真實的執行sql語句。

現在你已經瞭解了mysql的整體架構,而且也大致明白了每一層是幹嘛的,現在我們把目光逐漸細化,畢竟上面這張圖還是太籠統。

二、細化的邏輯架構圖

看下面這張圖。

3分鐘學會mysql數據庫的邏輯架構

​這張圖相比較前面那張圖就細化了一部分,從上到下還是分為了四層,

第一層:在這裡我們可以看出,連接的客戶端有很多,PHP、python、jdbc等等都有。

第二層:這一層是鏈接層,對應於第一張圖的連接處理層,主要是處理客戶端的連接,這是因為客戶端很多種類很多。

第三層:這一層是服務層。主要是處理客戶端請求的sql語句,如何處理呢?大致流程就是,先查詢緩存,如果緩存有,那就直接拿出來返回。如果沒有那就解析器解析,然後優化器優化,各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發器,視圖等。

第四層:這一層是引擎層,在這裡我們可以看到有好幾種不同的存儲引擎,比如InnoDB,MyISAM,memory等等。真正負責MySQL中數據的存儲和提取。

假如說我們使用jdbc執行一條插入的sql語句,整個流程是如何執行的呢?

首先,jdbc屬於第一層,通過第二層的連接處理連接到mysql服務器,接下來,通過解析器對sql語句進行解析,然後再通過優化器對sql語句進行優化,最終調用第四層的存儲引擎的接口,執行插入語句,將數據插入到文件或者是其他文件系統上。

是不是很簡單。通常在學習mysql的時候,老師都會介紹到存儲引擎。那時候可能你還沒有注意到他的重要性,現在相信你應該體會到了。也就是說服務層的那些功能,都是由存儲引擎提供的。不同的存儲引擎提供的可能是不一樣的。如何去比較這些存儲引擎呢?我們列了一些指標去對比一下:

3分鐘學會mysql數據庫的邏輯架構

對於mysql數據庫來說,默認的就是InnoDB,它不能支持哈希索引還有全文索引。因此如果有一天你不喜歡它了也可以去更換,語句就是SET default_storage_engine=< 存儲引擎名 >。


分享到:


相關文章: