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的核心服務功能所在層,包括查詢解析,分析,優化,快取以及所有的內建函式,所有跨儲存...