前言
MySQL被设计为一个单进程多线程架构的数据库,其体系结构如下图1-1所示:
图1-1:MySQL体系结构图
从图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 | 高 | 非常低 | 低 |
| 内存成本 | 低 | 低 | 中 | 高 | 低 | 高 |
| 批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 | 高 |
| 集群数据库支持 | ✔︎ | |||||
| 复制支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| 外键支持 | ✔︎ | |||||
| 备份、时间点恢复 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| 查询缓存支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| 更新数据字典的统计信息 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |









网友评论