前言
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 | 高 | 非常低 | 低 |
内存成本 | 低 | 低 | 中 | 高 | 低 | 高 |
批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 | 高 |
集群数据库支持 | ✔︎ | |||||
复制支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
外键支持 | ✔︎ | |||||
备份、时间点恢复 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
查询缓存支持 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
更新数据字典的统计信息 | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
网友评论