Mysql分層邏輯架構

2021-09-23 05:56:08 字數 1859 閱讀 7559

mysql是乙個開源的關係型資料庫產品, 採用處理與儲存分離的設計,靈活性高,

這些年已成為網際網路應用上常用的關係型資料庫。網際網路系統特點是高併發,大資料量,

一般瓶頸最終還是會落到資料庫,所以優化mysql是必不可少的。

優化前我們要對mysql服務內部的邏輯結構有一定了解, 

有助於我們對優化的深入學習.

一. mysql邏輯分層

首先可以把服務端想象成乙個大的容器,裡面有四層結構,

當乙個請求過來後,將會執行這四層,

執行一遍後才會返回給我們想要的結果。

1.連線層

我們客戶端傳送乙個select是直接交給連線層來處理,

而它的作用就是提供與客戶端連線的服務.

連線層只是與客戶端建立起連線.

完成一些類似連線處理,授權認證 及相關的安全方案. 

在該層上引入了連線池的概念.

2.服務層

提供核心的服務功能,如sql介面,完成快取的查詢,

sql的分析和優化部分及內建函式的執行.

服務包括以下內容:

2備份

安全複製

集群2

儲存過程

檢視觸發器

2.3-parser解析

查詢事務

物件許可權

2.4-optimizer優化器

當我們編寫sql語句執行時,

優化器會覺得我寫的sql語句效能不夠好,這個時候,

優化器會自己寫乙個等價於跟我寫的執行後結果一致的sql語句進行代替.

2.5-cache buffers快取

伺服器會查詢內部的快取,如果快取空間足夠大,

這樣可以解決大量讀操作的環境中,能夠很好的提公升系統效能

3.引擎層

儲存引擎是真正負責mysql中資料的儲存和提取,

伺服器通過api與儲存引擎進行通訊,

不同的儲存引擎提供的功能不同,

可以根據自己的實際需求來進行選取

常見的有:lnnodb、mylsam、memory

lnnodb 【mysql預設】:它在設計的時候,它是事物優先.

原理:因為它是行鎖,我每一條資料都要鎖,

鎖的太多,效能就降低了,雖然效能降低了,

但是我適合高併發了,就不容易出錯了

mylsam:效能優先

原理:因為它是表鎖,

對於表裡面的十條資料來說是不受影響的,

對十條鎖一次就完了,所以效能快

memroy:

memory儲存引擎是mysql中的一類特殊的儲存引擎。

其使用儲存在記憶體中的內容來建立表,

而且所有資料也放在記憶體中,因此,

其基於記憶體中的特性,

這類表的處理速度會非常快,

但是,其資料易丟失,生命周期短

4.儲存層

主要是將資料儲存在執行的計算機檔案系統之上,

並完成與儲存引擎的互動.

二. 整體執行流程

1.首先客戶端發出乙個select操作

2.連線層接收後給服務層

3.服務層對你的查詢進行乙個優化

並把優化結果給引擎層

4.選擇當前資料庫的引擎,選完引擎後

引擎將最終的資料交給了儲存層

5.儲存層,用儲存層來存資料

三.下期內容:

dql內部執行流程與查詢優化器 

架構系列 邏輯分層總結

將業務邏輯層獨立出來是邏輯架構分層的基礎,而將應用邏輯從業務邏輯層中分離出來是服務層 應用層 的基礎。高內聚低耦合是分層依賴的基礎,因此合理的劃分層次,減少層級依賴是邏輯分層架構的核心。1.層的原則 1 每一層以介面方式供上層呼叫。2 上層只能呼叫下層。3 依賴分為鬆散互動和嚴格互動兩種。2.業務邏...

MySQL邏輯架構

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

MySQL邏輯架構

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