德州市建設(shè)局網(wǎng)站合肥網(wǎng)絡(luò)seo
目錄
- 一、MySQL總體架構(gòu)
- 二、各層的作用
- 1、連接層
- 2、應(yīng)用層
- 3、存儲(chǔ)引擎層
一、MySQL總體架構(gòu)
作為常問(wèn)八股文,相信不少小伙伴當(dāng)年都被問(wèn)到過(guò)這個(gè)問(wèn)題,回答這個(gè)問(wèn)題我們首先得知道MySQL服務(wù)器基本架構(gòu),主要分為連接層,應(yīng)用層和存儲(chǔ)引擎層。如下:
二、各層的作用
1、連接層
首先不同語(yǔ)言客戶(hù)端通過(guò)連接器連接mysql,mysql會(huì)進(jìn)行權(quán)限驗(yàn)證,連接限制,連接緩存,線(xiàn)程重用等等。
2、應(yīng)用層
到達(dá)應(yīng)用層時(shí),會(huì)對(duì)執(zhí)行的SQL進(jìn)行分類(lèi),如果是查詢(xún)語(yǔ)句會(huì)對(duì)語(yǔ)句進(jìn)行解析,找到對(duì)應(yīng)的表,要檢索的字段和查詢(xún)條件。
同時(shí)優(yōu)化器會(huì)根據(jù)表是否有索引等制定執(zhí)行計(jì)劃?rùn)z索數(shù)據(jù),最后優(yōu)先去緩存層中查詢(xún)數(shù)據(jù),緩存中沒(méi)有則從磁盤(pán)讀取。
該層主要包含SQL接口層,解析器,優(yōu)化器,和緩存層,各層各司其職。
- SQL Interace:區(qū)分DML、DDL、存儲(chǔ)過(guò)程、視圖、觸發(fā)器等。
- Parser(解析器):比如查詢(xún)語(yǔ)句的翻譯,查哪張表,查哪些字段,有哪些條件等。
- Optimizer(優(yōu)化器):走索引還是全表掃、多個(gè)表查詢(xún)先查哪個(gè)表等。
- Caches & Buffers(緩存層):查數(shù)據(jù)時(shí)先查緩存,若沒(méi)有則從磁盤(pán)讀取。
3、存儲(chǔ)引擎層
當(dāng)查詢(xún)數(shù)據(jù)時(shí),MySQL服務(wù)器會(huì)通過(guò)存儲(chǔ)引擎檢索數(shù)據(jù),存儲(chǔ)引擎決定數(shù)據(jù)怎么存儲(chǔ),以及具體如何從磁盤(pán)中查詢(xún)數(shù)據(jù)。
上面的tb_user_copy
表指定了存儲(chǔ)引擎為CSV,關(guān)于存儲(chǔ)引擎具體怎么存儲(chǔ)數(shù)據(jù),我們可以查看mysql數(shù)據(jù)目錄下的存儲(chǔ)信息,如下:
備注:可以看到在MySQL的數(shù)據(jù)目錄下有名為
tb_user_copy.CSV
的文,不同存儲(chǔ)引擎存儲(chǔ)表數(shù)據(jù)的格式和結(jié)構(gòu)都不同。
mysql中支持的存儲(chǔ)引擎,可以通過(guò)命令檢索,如下:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
下節(jié)我們具體講講InnoDB的架構(gòu),包含內(nèi)存結(jié)構(gòu)和磁盤(pán)結(jié)構(gòu),敬請(qǐng)期待。