MySQL邏輯架構(gòu)

Mysql邏輯架構(gòu)共三層:
- 入口層:連接/線程處理
- 服務(wù)執(zhí)行層
- 存儲(chǔ)引擎

連接/線程處理
像大多數(shù)架構(gòu)來說,入口層是必不可少的;Mysql入口層主要負(fù)責(zé)連接管理和認(rèn)證及權(quán)限管理等。
- 連接管理:每個(gè)連接擁有一個(gè)線程,Mysql服務(wù)端維護(hù)了一個(gè)維護(hù)連接的線程池
- 認(rèn)證管理:基于用戶名、原始主機(jī)信息和密碼;如果使用了SSL連接,還可以使用X.509證書認(rèn)證
- 權(quán)限管理:Mysql對(duì)庫(kù)、表及操作權(quán)限都可以進(jìn)行約束管理
服務(wù)執(zhí)行層
執(zhí)行層主要包含以下組件:
- 查詢緩存:像大多數(shù)架構(gòu)中的redis
- 解析器:詞法分析和語法分析,創(chuàng)建一個(gè)解析樹(內(nèi)部的數(shù)據(jù)結(jié)構(gòu))
- 優(yōu)化器:主要做的就是重寫查詢、決定表的讀取順序、選擇合適的索引等工作。
存儲(chǔ)引擎
Mysql有以下存儲(chǔ)引擎:
- InnoDB(默認(rèn))
- MyISAM
- 其他非常用引擎
- Archive
- Blackhole
- CSV引擎
- Federated引擎
- Memory引擎
- Merge引擎
- NDB集群引擎
InnoDB
- 數(shù)據(jù)存儲(chǔ):表空間,由一系列的數(shù)據(jù)文件組成。存儲(chǔ)文件是平臺(tái)獨(dú)立的,可以任意復(fù)制到各操作系統(tǒng)
- 事務(wù):支持MVCC和實(shí)現(xiàn)了間隙鎖來防止幻讀
- 索引:基于聚簇索引(主鍵索引)實(shí)現(xiàn)。二級(jí)索引(非主鍵索引)都是包含了主鍵索引的
- 性能優(yōu)化措施:
- 磁盤預(yù)讀
- 加速讀操作的自適應(yīng)哈希索引
- 插入緩沖區(qū)(insert buffer)
MyISAM
【功能】
- 支持:全文索引、壓縮、空間函數(shù)(GIS)
- 不支持:事務(wù)、行級(jí)鎖、崩潰后無法安全恢復(fù)
【存儲(chǔ)】
- 文件:數(shù)據(jù)文件(.MYD)和索引文件(.MYI)
- 變長(zhǎng)行處理:
- 5.0以前:默認(rèn)能處理4G的數(shù)據(jù),指針長(zhǎng)度為4個(gè)字節(jié),32位
- 5.0:默認(rèn)能處理256TB的數(shù)據(jù),因?yàn)橹羔橀L(zhǎng)度為6個(gè)字節(jié)
- 所有版本都支持8字節(jié),根據(jù)配置項(xiàng)MAX_ROW和MAX_ROW_LENGTH配置,兩者相乘得到最終值
【特性】
- 加鎖與并發(fā):表級(jí)鎖和并發(fā)插入(讀時(shí)可寫)
- 修復(fù):
- 人工修復(fù):CHECK TABLE mytable和REPAIR TABKE mytable語句
- 自動(dòng)修復(fù):myisamchk命令行
- 索引特性:全文索引(基于分詞創(chuàng)建),對(duì)于BLOB和TEXT,會(huì)基于前500個(gè)字符創(chuàng)建索引
- 延遲更新索引鍵(Delayed Key Write):建表時(shí)開啟DELAY_KEY_WRITE。修改先寫入鍵緩沖區(qū),等清理緩沖區(qū)或關(guān)閉表時(shí)才會(huì)更新索引
- 壓縮表:壓縮后不可修改,表記錄獨(dú)立壓縮
其他非常用引擎
