1. MySQL總體分層
1.1 連接配接層
我們用戶端發送一個Select是直接交給連接配接層來處理,而它的作用就是提供與用戶端連接配接的服務.連接配接層隻是與用戶端建立起連接配接.完成一些類似連接配接處理,授權認證 及相關的安全方案. 在該層上引入了連接配接池的概念.
1.2 服務層
提供核心的服務功能,如sql接口,完成緩存的查詢,
sql的分析和優化部分及内置函數的執行.
服務包括以下内容:
1.2.1-Mangement Service
- 備份
- 安全
- 複制
- 叢集
1.2.2-SQL interface
- 存儲過程
- 視圖
- 觸發器
1.2.3-Parser解析
- 查詢事務
- 對象權限
1.2.4-Optimizer優化器
當我們編寫Sql語句執行時,優化器會覺得我寫的sql語句性能不夠好,這個時候,優化器會自己寫一個等價于跟我寫的執行後結果一緻的sql語句進行代替.
1.2.5-Cache Buffers
緩存
伺服器會查詢内部的緩存,如果緩存空間足夠大,這樣可以解決大量讀操作的環境中,能夠很好的提升系統性能
1.3 引擎層
存儲引擎是真正負責MYSQL中資料的存儲和提取,
伺服器通過API與存儲引擎進行通信,
不同的存儲引擎提供的功能不同,
可以根據自己的實際需求來進行選取
常見的有:lnnoDB、MylSAM、Memory
lnnoDB 【Mysql預設】:它在設計的時候,它是事物優先.
原理:因為它是行鎖,我每一條資料都要鎖,
鎖的太多,性能就降低了,雖然性能降低了,
但是我适合高并發了,就不容易出錯了
MylSAM:性能優先
原理:因為它是表鎖,
對于表裡面的十條資料來說是不受影響的,
對十條鎖一次就完了,是以性能快
Memroy:
memory存儲引擎是MySQL中的一類特殊的存儲引擎。其使用存儲在記憶體中的内容來建立表,而且所有資料也放在記憶體中,是以,其基于記憶體中的特性,這類表的處理速度會非常快,但是,其資料易丢失,生命周期短
1.4 存儲層
主要是将資料存儲在運作的計算機檔案系統之上,
并完成與存儲引擎的互動.
2. 整體執行流程
1.首先用戶端發出一個Select操作
2.連接配接層接收後給服務層
3.服務層對你的查詢進行一個優化
并把優化結果給引擎層
4.選擇目前資料庫的引擎,選完引擎後
引擎将最終的資料交給了存儲層
5.存儲層,用存儲層來存資料