前言
MySQL被設計爲一個單進程多線程架構的數據庫,其體系結構如下圖1-1所示:
從圖1-1我們可以發現,MySQL由以下幾部分組成:
- 連接池組件(Connection Pool)。
- 管理服務和工具組件(Management Services & Utilities)。
- SQL接口組件(SQL Interface)。
- 查詢分析器組件(Parser)。
- 優化器組件(Optimizer)。
- 緩衝組件(Caches & Buffers)。
- 插件式存儲引擎(Pluggable Storage Engines)。
- 物理文件(Files & Logs)。
MySQL區別於其他數據庫的最重要的特點:
擁有插件式的表存儲引擎
接下來我們具體說說MySQL的表存儲引擎。
MySQL表存儲引擎
存儲引擎的好處在於,每個存儲引擎都有各自的特點,能夠根據具體的應用建立不同的存儲引擎表。
由於MySQL的開源特性,存儲引擎可以分爲MySQL官方存儲引擎和第三方存儲引擎。
以下表格列出常見存儲引擎的特性特點:
特性 | MyISAM | BDB | Memory | InnoDB | Archive | NDB |
---|---|---|---|---|---|---|
存儲限制 | No | No | Yes | 64TB | No | Yes |
事務(提交、回滾等) | ✔︎ | ✔︎ | ||||
鎖粒度 | Table | Page | Table | Row | Row | Row |
MVCC | ✔︎ | ✔︎ | ✔︎ | |||
地理空間支持 | ✔︎ | |||||
B-Tree 索引 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | |
Hash索引 | ✔︎ | ✔︎ | ✔︎ | |||
全文檢索索引 | ✔︎ | |||||
聚集索引 | ✔︎ | |||||
數據緩存 | ✔︎ | ✔︎ | ✔︎ | |||
索引緩存 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ||
壓縮數據 | ✔︎ | ✔︎ | ||||
加密數據 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
存儲成本(空間利用率) | 低 | 低 | N/A | 高 | 非常低 | 低 |
內存成本 | 低 | 低 | 中 | 高 | 低 | 高 |
批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 | 高 |
集羣數據庫支持 | ✔︎ | |||||
複製支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
外鍵支持 | ✔︎ | |||||
備份、時間點恢復 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
查詢緩存支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
更新數據字典的統計信息 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |