1.MySQL邏輯架構
MySQL邏輯架構圖
MySQL邏輯架構分四層
1.連接層:主要完成一些類似連接處理,授權認證及相關的安全方案。
2.服務層:在 MySQL據庫系統處理底層數據之前的所有工作都是在這一層完成的,包括權限判斷,SQL接口,SQL解析,SQL分析優化, 緩存查詢的處理以及部分內置函數執行(如日期,時間,數學運算,加密)等等。各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發器,視圖等。
3.引擎層:是底層數據存取操作實現部分,由多種存儲引擎共同組成。真正負責MySQL中數據的存儲和提取。就像Linux眾多的文件系統 一樣。每個存儲引擎都有自己的優點和缺陷。服務器是通過存儲引擎API來與它們交互的。這個接口隱藏 了各個存儲引擎不同的地方。對於查詢層盡可能的透明。這個API包含了很多底層的操作。如開始一個事物,或者取出有特定主鍵的行。存儲引擎不能解析SQL,互相之間也不能通信。僅僅是簡單的響應服務器 的請求。
4.存儲層:將數據存儲於裸設備的文件系統之上,完成與存儲引擎的交互。
MySQL語句執行流程圖
2.MySQL存儲引擎
查看MySQL中現在提供的存儲引擎:
show engines;
查看MySQL現在默認使用的存儲引擎:
show variables like '%storage_engine%';
查看某表使用的存儲引擎:
show create table 表名;
從上面MySQL邏輯架構圖可以看到,MySQL有很多種存儲引擎,他們以插件的形式存在,需要那個存儲引擎則裝上那個存儲引擎。
其實在MySQL中主要使用MyISAM引擎和InnoDB引擎。
MyISAM引擎和InnoDB引擎簡單對比:
MyISAM引擎 | InnoDB引擎 | |
---|---|---|
主外鍵 | 不支持 | 支持 |
事務 | 不支持 | 支持 |
行表鎖 | 表所.不適合高並發 | 行鎖.適合高並發 |
緩存 | 只緩存索引 | 緩存索引和真實數據 |
表空間 | 小 | 大 |
關注點 | 性能.偏讀 | 事務 |
默認安裝 | 是 | 是 |