您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql的邏輯架構原理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql的邏輯架構原理”吧!
先給出一張邏輯架構圖,這張圖是讓你從宏觀的角度來分析認識一下。
從這張圖你可以獲取到如下的信息:
(1)mysql架構大致上可以劃分為四層。
(2)第一層,主要是不同客戶端的連接。
(3)第二層,主要是處理客戶端的連接。
(4)第三層,處理客戶端的sql語句。
(5)第四層,存儲引擎真實的執行sql語句。
現在你已經了解了mysql的整體架構,而且也大致明白了每一層是干嘛的,現在我們把目光逐漸細化,畢竟上面這張圖還是太籠統。
看下面這張圖。
這張圖相比較前面那張圖就細化了一部分,從上到下還是分為了四層,
第一層:在這里我們可以看出,連接的客戶端有很多,PHP、python、jdbc等等都有。
第二層:這一層是鏈接層,對應于第一張圖的連接處理層,主要是處理客戶端的連接,這是因為客戶端很多種類很多。
第三層:這一層是服務層。主要是處理客戶端請求的sql語句,如何處理呢?大致流程就是,先查詢緩存,如果緩存有,那就直接拿出來返回。如果沒有那就解析器解析,然后優化器優化,各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發器,視圖等。
第四層:這一層是引擎層,在這里我們可以看到有好幾種不同的存儲引擎,比如InnoDB,MyISAM,memory等等。真正負責MySQL中數據的存儲和提取。
假如說我們使用jdbc執行一條插入的sql語句,整個流程是如何執行的呢?
首先,jdbc屬于第一層,通過第二層的連接處理連接到mysql服務器,接下來,通過解析器對sql語句進行解析,然后再通過優化器對sql語句進行優化,最終調用第四層的存儲引擎的接口,執行插入語句,將數據插入到文件或者是其他文件系統上。
是不是很簡單。通常在學習mysql的時候,老師都會介紹到存儲引擎。那時候可能你還沒有注意到他的重要性,現在相信你應該體會到了。也就是說服務層的那些功能,都是由存儲引擎提供的。不同的存儲引擎提供的可能是不一樣的。如何去比較這些存儲引擎呢?我們列了一些指標去對比一下:
功能 | MylSAM | MEMORY | InnoDB | Archive |
---|---|---|---|---|
存儲限制 | 256TB | RAM | 64TB | None |
支持事務 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持樹索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持數據緩存 | No | N/A | Yes | No |
支持外鍵 | No | No | Yes | No |
對于mysql數據庫來說,默認的就是InnoDB,它不能支持哈希索引還有全文索引。因此如果有一天你不喜歡它了也可以去更換,語句就是SET default_storage_engine=< 存儲引擎名 >。
感謝各位的閱讀,以上就是“mysql的邏輯架構原理”的內容了,經過本文的學習后,相信大家對mysql的邏輯架構原理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。