MySQL 邏輯架構

2021-08-05 19:28:08 字數 1683 閱讀 5579

對mysql架構的基本情況掌握了,才能深入學習高階mysql的一些知識。

1.連線層

最上層是一些客戶端和連線服務,包含 本地sock通訊和大多數基於客戶端/服務端工具實現的類似於tcp/ip的通訊。主要完成一些類似於連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該層上可以實現基於ssl的安全鏈結。伺服器也會為安全接入的每個客戶端驗證它所具有的操作許可權。

2.服務層

第二層架構主要完成核心服務功能,如sql介面,並完成快取的查詢,sql的分析和優化及部分內建函式的執行。所有跨儲存引擎的功能也在這一層實現,如過程、函式等。在該層,伺服器會解析查詢並建立相應的內部解析樹,並對其完成相應的優化如確定查詢表的順序,是否利用索引等,最後生成相應的執行操作。如果是select語句,伺服器還會查詢內部的快取。如果快取空間足夠大,這樣在解決大量讀操作的環境中能夠很好的提公升系統的效能。

3.引擎層

儲存引擎層,儲存引擎真正的負責了mysql中資料的儲存和提取,伺服器通過api與儲存引擎進行通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需要進行選取。

4.儲存層

資料儲存層,主要是將資料儲存在執行於裸裝置的檔案系統之上,並完成與儲存引擎的互動。

查詢流程:

mysql的查詢流程大致是:

mysql客戶端通過協議與mysql伺服器建連線,傳送查詢語句,先檢查查詢快取,如果命中,直接返回結果,否則進行語句解析。  有一系列預處理,比如檢查語句是否寫正確了,然後是查詢優化(比如是否使用索引掃瞄,如果是乙個不可能的條件,則提前終止),生成查詢計畫,然後查詢引擎啟動,開始執行查詢,從底層儲存引擎呼叫api獲取資料,最後返回給客戶端。怎麼存資料、怎麼取資料,都與儲存引擎有關。

mysql預設使用的btree索引,並且乙個大方向是,無論怎麼折騰sql,至少在目前來說,mysql最多只用到表中的乙個索引。

#檢視當前mysql已提供什麼儲存引擎

#檢視當前mysql預設的儲存引擎

對比項

myisam

innodb

主外來鍵不支援支援

事務不支援

支援行表鎖

表鎖,即使操作一條記錄也會鎖住整個表,不適合高併發的操作

行鎖,操作時只鎖某一行,不對其它行有影響,適合高併發的操作 快取

只快取索引,不快取真實資料

不僅快取索引還要快取真實資料,

對記憶體要求較高,而且記憶體大小對效能有決定性的影響

表空間小

大關注點

效能事務

預設安裝yy

MySQL邏輯架構

庖丁解牛之前應該也是對牛的骨架有乙個全面的認知。同樣學習資料庫也從mysql的邏輯架構開始吧。了解mysql邏輯架構有助於深入理解mysql伺服器。最上層的服務並不是mysql所獨有的,大多數基於網路的客戶端 伺服器的工具或者服務都有類似的架構。比如連線處理 授權認證 安全等等。第二層,mysql大...

MySQL邏輯架構

mysql伺服器邏輯架構圖如下 每個虛線框為一層,總共三層。最上層的服務不是mysql特有的,大多數基於網路的客戶端 伺服器的工具或者服務都有類似的架構,為請求做連線處理,授權認證,安全等。第二層架構是大多數mysql的核心服務功能所在層,包括查詢解析,分析,優化,快取以及所有的內建函式,所有跨儲存...

MySQL邏輯架構

如果能在頭腦中構建一幅mysql各元件之間如何協同工作的架構圖,有助於深入理解mysql伺服器。下圖展示了mysql的邏輯架構圖。mysql邏輯架構整體分為三層,最上層為客戶端層,並非mysql所獨有,諸如 連線處理 授權認證 安全等功能均在這一層處理。mysql大多數核心服務均在中間這一層,包括查...