前言
MySQL被設(shè)計(jì)為一個(gè)單進(jìn)程多線程架構(gòu)的數(shù)據(jù)庫(kù)询筏,其體系結(jié)構(gòu)如下圖1-1所示:
從圖1-1我們可以發(fā)現(xiàn),MySQL由以下幾部分組成:
- 連接池組件(Connection Pool)。
- 管理服務(wù)和工具組件(Management Services & Utilities)。
- SQL接口組件(SQL Interface)。
- 查詢分析器組件(Parser)侈沪。
- 優(yōu)化器組件(Optimizer)。
- 緩沖組件(Caches & Buffers)晚凿。
- 插件式存儲(chǔ)引擎(Pluggable Storage Engines)亭罪。
- 物理文件(Files & Logs)。
MySQL區(qū)別于其他數(shù)據(jù)庫(kù)的最重要的特點(diǎn):
擁有插件式的表存儲(chǔ)引擎
接下來(lái)我們具體說(shuō)說(shuō)MySQL的表存儲(chǔ)引擎歼秽。
MySQL表存儲(chǔ)引擎
存儲(chǔ)引擎的好處在于应役,每個(gè)存儲(chǔ)引擎都有各自的特點(diǎn),能夠根據(jù)具體的應(yīng)用建立不同的存儲(chǔ)引擎表。
由于MySQL的開(kāi)源特性箩祥,存儲(chǔ)引擎可以分為MySQL官方存儲(chǔ)引擎和第三方存儲(chǔ)引擎院崇。
以下表格列出常見(jiàn)存儲(chǔ)引擎的特性特點(diǎn):
特性 | MyISAM | BDB | Memory | InnoDB | Archive | NDB |
---|---|---|---|---|---|---|
存儲(chǔ)限制 | No | No | Yes | 64TB | No | Yes |
事務(wù)(提交、回滾等) | ?? | ?? | ||||
鎖粒度 | Table | Page | Table | Row | Row | Row |
MVCC | ?? | ?? | ?? | |||
地理空間支持 | ?? | |||||
B-Tree 索引 | ?? | ?? | ?? | ?? | ?? | |
Hash索引 | ?? | ?? | ?? | |||
全文檢索索引 | ?? | |||||
聚集索引 | ?? | |||||
數(shù)據(jù)緩存 | ?? | ?? | ?? | |||
索引緩存 | ?? | ?? | ?? | ?? | ||
壓縮數(shù)據(jù) | ?? | ?? | ||||
加密數(shù)據(jù) | ?? | ?? | ?? | ?? | ?? | ?? |
存儲(chǔ)成本(空間利用率) | 低 | 低 | N/A | 高 | 非常低 | 低 |
內(nèi)存成本 | 低 | 低 | 中 | 高 | 低 | 高 |
批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 | 高 |
集群數(shù)據(jù)庫(kù)支持 | ?? | |||||
復(fù)制支持 | ?? | ?? | ?? | ?? | ?? | ?? |
外鍵支持 | ?? | |||||
備份袍祖、時(shí)間點(diǎn)恢復(fù) | ?? | ?? | ?? | ?? | ?? | ?? |
查詢緩存支持 | ?? | ?? | ?? | ?? | ?? | ?? |
更新數(shù)據(jù)字典的統(tǒng)計(jì)信息 | ?? | ?? | ?? | ?? | ?? | ?? |