注:主要講解MySql的InnoDB,MyISAM存儲引擎。
體系結(jié)構(gòu)

Client Connectors 層
負責處理客戶端的連接請求,與客戶端創(chuàng)建連接。目前 MySQL 幾乎支持所有的連接類型,例如常見的 JDBC、Python、Go 等MySQL Server 層
Connection Pool: 負責處理和存儲數(shù)據(jù)庫與客戶端創(chuàng)建的連接,一個線程負責管理一個連接。Connection Pool 包括了用戶認證模塊,就是用戶登錄身份的認證和鑒權(quán)及安全管理,也就是用戶執(zhí)行操作權(quán)限校驗
Service & utilities: 是管理服務&工具集,包括備份恢復、安全管理、集群管理服務和工具。
SQL interface: 負責接收客戶端發(fā)送的各種 SQL 語句,比如 DML、DDL 和存儲過程等。
Parser: 解析器會對 SQL 語句進行語法解析生成解析樹
Optimizer: 查詢優(yōu)化器會根據(jù)解析樹生成執(zhí)行計劃,并選擇合適的索引,然后按照執(zhí)行計劃執(zhí)行 SQL 語言并與各個存儲引擎交互。
Caches: 緩存包括各個存儲引擎的緩存部分,比如:InnoDB 存儲的 Buffer Pool、MyISAM 存儲引擎的 key buffer 等,Caches 中也會緩存一些權(quán)限,也包括一些 Session 級別的緩存。存儲引擎層
存儲引擎包括 MyISAM、InnoDB,以及支持歸檔的 Archive 和內(nèi)存的 Memory 等。MySQL是插件式的存儲引擎,只要正確定義與 MySQL Server 交互的接口,任何引擎都可以訪問MySQL,這也是 MySQL 流行的原因之一存儲引擎底部是物理存儲層,是文件的物理存儲層,包括二進制日志、數(shù)據(jù)文件、錯誤日志、慢查詢?nèi)罩尽⑷罩?、redo/undo 日志等
用一條 SQL SELECT 語句的執(zhí)行軌跡來說明客戶端與 MySQL 的交互過程

注
- 在 MySQL 5.6 版本之前,默認的存儲引擎都是 MyISAM,但 5.6 版本以后默認的存儲引擎就是 InnoDB 了