基礎(chǔ)概念
數(shù)據(jù)庫實例是由數(shù)據(jù)庫后臺進程/線程以及一個共享內(nèi)存區(qū)組成肛捍。共享內(nèi)存可以被運行的后臺進程/線程所共享相种。需要注意的是赡麦,數(shù)據(jù)庫實例才是真正用來操作數(shù)據(jù)庫文件的盼玄。
MySQL體系架構(gòu)
如圖所示:
image
- 最上層的連接服務(wù)届搁,用于不同語言與SQL的交互缘薛。
- 可以通過【show variables like '%connections%'】命令查看MySQL實例的最大連接數(shù)和單個用戶的最大連接數(shù)窍育。
- 第二層MySQL Server,大多數(shù)MySQL的核心服務(wù)功能都在這一層宴胧,包括查詢解析漱抓、分析、優(yōu)化恕齐、緩存乞娄,所有跨存儲引擎的功能都集中在這一層實現(xiàn)。
-
Management Serveices & Utilities:系統(tǒng)管理和控制工具
備份和恢復的安全性显歧,復制仪或,集群,管理士骤,配置范删,遷移和元數(shù)據(jù)。 -
Connection Pool:連接池
進行身份驗證拷肌、線程重用到旦,連接限制,檢查內(nèi)存巨缘,數(shù)據(jù)緩存添忘;管理用戶的連接,線程處理等需要緩存的需求若锁。 -
SQL Interface:SQL 接口
進行 DML搁骑、DDL,存儲過程又固、視圖仲器、觸發(fā)器等操作和管理;用戶通過 SQL 命令來查詢所需結(jié)果口予。 -
Parser:解析器
查詢翻譯對象的特權(quán)娄周;SQL 命令傳遞到解析器的時候會被解析器驗證和解析涕侈。 - Optimizer:查詢優(yōu)化器
-
Cache 和 Buffer:查詢緩存
全局和引擎特定的緩存和緩沖區(qū)
-
Management Serveices & Utilities:系統(tǒng)管理和控制工具
- 第三層為存儲引擎層沪停,存儲引擎負責MySQL中數(shù)據(jù)的存儲和提取,服務(wù)器通過API于存儲引擎進行通信裳涛。
- 可以通過【SHOW ENGINES】命令查看各個存儲引擎信息木张。
執(zhí)行流程
image
在 MySQL Server 中首先有一個 Cache,用來緩存 SQL 查詢語句的查詢結(jié)果端三,如果緩存命中舷礼,則直接返回結(jié)果,如果緩存沒有命中郊闯,則對 SQL 語句進行語法分析妻献,預處理和查詢優(yōu)化蛛株,最終得到該查詢的執(zhí)行計劃,之后育拨,該執(zhí)行計劃被送往數(shù)據(jù)庫引擎谨履,得到最終查詢到的數(shù)據(jù)。數(shù)據(jù)庫引擎并不會嚴格按照執(zhí)行計劃進行執(zhí)行熬丧,而是會根據(jù)自身的架構(gòu)和特性進行一些調(diào)整笋粟,以提高執(zhí)行效率。