您好,登錄后才能下訂單哦!
MySQL數(shù)據(jù)庫中邏輯架構(gòu)的原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
一、籠統(tǒng)的邏輯架構(gòu)
先給出一張邏輯架構(gòu)圖,這張圖是讓你從宏觀的角度來分析認識一下。
從這張圖你可以獲取到如下的信息:
(1)mysql架構(gòu)大致上可以劃分為四層。
(2)第一層,主要是不同客戶端的連接。
(3)第二層,主要是處理客戶端的連接。
(4)第三層,處理客戶端的sql語句。
(5)第四層,存儲引擎真實的執(zhí)行sql語句。
現(xiàn)在你已經(jīng)了解了mysql的整體架構(gòu),而且也大致明白了每一層是干嘛的,現(xiàn)在我們把目光逐漸細化,畢竟上面這張圖還是太籠統(tǒng)。
二、細化的邏輯架構(gòu)圖
看下面這張圖。
這張圖相比較前面那張圖就細化了一部分,從上到下還是分為了四層,
第一層:在這里我們可以看出,連接的客戶端有很多,PHP、python、jdbc等等都有。
第二層:這一層是鏈接層,對應(yīng)于第一張圖的連接處理層,主要是處理客戶端的連接,這是因為客戶端很多種類很多。
第三層:這一層是服務(wù)層。主要是處理客戶端請求的sql語句,如何處理呢?大致流程就是,先查詢緩存,如果緩存有,那就直接拿出來返回。如果沒有那就解析器解析,然后優(yōu)化器優(yōu)化,各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發(fā)器,視圖等。
第四層:這一層是引擎層,在這里我們可以看到有好幾種不同的存儲引擎,比如InnoDB,MyISAM,memory等等。真正負責MySQL中數(shù)據(jù)的存儲和提取。
假如說我們使用jdbc執(zhí)行一條插入的sql語句,整個流程是如何執(zhí)行的呢?
首先,jdbc屬于第一層,通過第二層的連接處理連接到mysql服務(wù)器,接下來,通過解析器對sql語句進行解析,然后再通過優(yōu)化器對sql語句進行優(yōu)化,最終調(diào)用第四層的存儲引擎的接口,執(zhí)行插入語句,將數(shù)據(jù)插入到文件或者是其他文件系統(tǒng)上。
是不是很簡單。通常在學習mysql的時候,老師都會介紹到存儲引擎。那時候可能你還沒有注意到他的重要性,現(xiàn)在相信你應(yīng)該體會到了。也就是說服務(wù)層的那些功能,都是由存儲引擎提供的。不同的存儲引擎提供的可能是不一樣的。如何去比較這些存儲引擎呢?我們列了一些指標去對比一下:
對于mysql數(shù)據(jù)庫來說,默認的就是InnoDB,它不能支持哈希索引還有全文索引。因此如果有一天你不喜歡它了也可以去更換,語句就是SET default_storage_engine=< 存儲引擎名 >。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。