基礎(chǔ)概念
數(shù)據(jù)庫(kù)實(shí)例是由數(shù)據(jù)庫(kù)后臺(tái)進(jìn)程/線程以及一個(gè)共享內(nèi)存區(qū)組成窗怒。共享內(nèi)存可以被運(yùn)行的后臺(tái)進(jìn)程/線程所共享芍阎。需要注意的是躁绸,數(shù)據(jù)庫(kù)實(shí)例才是真正用來(lái)操作數(shù)據(jù)庫(kù)文件的吮铭。
MySQL體系架構(gòu)
如圖所示:
mysql體系架構(gòu)
- 最上層的連接服務(wù),用于不同語(yǔ)言與SQL的交互椎扬。
- 可以通過(guò)【show variables like '%connections%'】命令查看MySQL實(shí)例的最大連接數(shù)和單個(gè)用戶的最大連接數(shù)惫搏。
- 第二層MySQL Server,大多數(shù)MySQL的核心服務(wù)功能都在這一層盗舰,包括查詢解析晶府、分析、優(yōu)化钻趋、緩存川陆,所有跨存儲(chǔ)引擎的功能都集中在這一層實(shí)現(xiàn)。
-
Management Serveices & Utilities:系統(tǒng)管理和控制工具
備份和恢復(fù)的安全性蛮位,復(fù)制较沪,集群,管理失仁,配置尸曼,遷移和元數(shù)據(jù)。 -
Connection Pool:連接池
進(jìn)行身份驗(yàn)證萄焦、線程重用控轿,連接限制,檢查內(nèi)存拂封,數(shù)據(jù)緩存茬射;管理用戶的連接,線程處理等需要緩存的需求冒签。 -
SQL Interface:SQL 接口
進(jìn)行 DML在抛、DDL,存儲(chǔ)過(guò)程萧恕、視圖刚梭、觸發(fā)器等操作和管理肠阱;用戶通過(guò) SQL 命令來(lái)查詢所需結(jié)果。 -
Parser:解析器
查詢翻譯對(duì)象的特權(quán)朴读;SQL 命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析屹徘。 - Optimizer:查詢優(yōu)化器
-
Cache 和 Buffer:查詢緩存
全局和引擎特定的緩存和緩沖區(qū)
-
Management Serveices & Utilities:系統(tǒng)管理和控制工具
- 第三層為存儲(chǔ)引擎層,存儲(chǔ)引擎負(fù)責(zé)MySQL中數(shù)據(jù)的存儲(chǔ)和提取磨德,服務(wù)器通過(guò)API于存儲(chǔ)引擎進(jìn)行通信缘回。
- 可以通過(guò)【SHOW ENGINES】命令查看各個(gè)存儲(chǔ)引擎信息。
執(zhí)行流程
mysql-architecture
在 MySQL Server 中首先有一個(gè) Cache典挑,用來(lái)緩存 SQL 查詢語(yǔ)句的查詢結(jié)果,如果緩存命中啦吧,則直接返回結(jié)果您觉,如果緩存沒(méi)有命中,則對(duì) SQL 語(yǔ)句進(jìn)行語(yǔ)法分析授滓,預(yù)處理和查詢優(yōu)化琳水,最終得到該查詢的執(zhí)行計(jì)劃,之后般堆,該執(zhí)行計(jì)劃被送往數(shù)據(jù)庫(kù)引擎在孝,得到最終查詢到的數(shù)據(jù)。數(shù)據(jù)庫(kù)引擎并不會(huì)嚴(yán)格按照?qǐng)?zhí)行計(jì)劃進(jìn)行執(zhí)行淮摔,而是會(huì)根據(jù)自身的架構(gòu)和特性進(jìn)行一些調(diào)整私沮,以提高執(zhí)行效率。