Archive 引擎
- Archive 引擎只支持 INSERT 和 SELECT 操作,在 MySQL5.1 之前不支持索引;
- Archive 引擎会缓存所有写并利用 zlib 对插入行进行压缩,所以比 MyISAM 表的磁盘 I/O 更少。
- 因每次 SELECT 查询需要执行全表扫描,因此该引擎更适合日志和数据采集类应用,适合需要更快速 INSERT 操作的场合。
1、Artichive 引擎支持行级锁和专用的缓冲区,可实现高并发插入。在一个查询开始直到返回表中所有行之前,引擎会阻止其他 SELECT 执行,以实现一致性读。 2、另实现批量插入在完成之前对读操作不可见。但该引擎不是一个事务型引擎,而是针对高速插入和压缩做了优化的简单引擎。
Blackhole 引擎
- Blackhole 引擎没有实现任何的存储机制,会丢弃所有的插入数据,不做任何保存。
- 但服务器会记录 Blackhole 表的日志,所以可用于复制数据到备库,或简单的记录到日志。
- 可在一些特殊的复制架构和日志审核时发挥作用。
- 问题较多,并不推荐使用。
CSV 引擎
- CSV 引擎可将普通的 CSV 文件作为 MySQL 表来处理,但该引擎不支持索引;
- CSV 引擎可在数据库运行时拷入或拷出文件。
- 可将 Excel 等文件转存为 CSV 文件,并复制到 MySQL 数据目录下,即可在 MySQL 中打开;
- 若数据写入到 CSV 引擎表,其他外部程序也可立即从表中读取 CSV 文件的数据,因此 CSV 引擎常作为一种数据交换机制。
Federated 引擎
- Federated 引擎是访问其他 MySQL 服务器的一个代理,它会创建一个到远程 MySQL 服务器的客户端连接,并将查询传输到远程服务器执行,然后提取或发送需要的数据。
- 默认禁用
- MariaDB 使用了后续改进版本,叫做 FederatedX。
Memory 引擎
- 若需要快速访问数据、且数据不会被修改,重启后丢失也无所谓,那可考虑使用 Memory 表(以前也称为 HEAP 表)
- Memory 表比 MyISAM 表至少快一个数量级
- 数据在内存中,不需要进行磁盘 I/O
- Memory 表的结构在长期后会保留,但数据会丢失。
Memory 表的场景与作用:
- 用户查找(lookup)或映射(mapping)表,如:邮编、州名映射的表
- 用于缓存周期性聚合数据(periodically aggregated data)的结果
- 用户保存数据分析中产生的中间数据。
特性:
- Memory 表支持 Hash 索引,因此查找操作非常快。虽然 Memory 很快,但无法取代传统基于磁盘的表。
- Memory 表是表级锁,因此并发写入性能较低。
- 不支持 BLOG 或 TEXT 类型的列,并且每行的长度固定;即使使用了 VARCHAR 列,实际存储也会转换成 CHAR ,这可能导致部分内存的浪费。
- 若 MySQL 在执行查询中需要使用临时表保存中间数据,内部使用的临时表就是 Memory 表。
- 若中间数据超过 Memory 表的限制,或者含有 BLOB 或 TEXT 字段,会临时转换为 MyISAM 表。
- 临时表是使用 CREATE TEMPORARY TABLE 语句创建的表,可使用任何数据引擎;临时表只在单个连接中可见,当断开时,临时表也不复存在。
Merge 引擎
- Merge 引擎是 MyISAM 引擎的一个变种。
- Merge 表是由多个 MyISAM 表合并而来的虚拟表。
- 若将 MySQL 用于日志或者数仓类应用,该引擎可发挥作用
- 但引入分区功能后,该引起已废弃
NDB 引擎
- NDB 集群存储引擎,作为 SQL 和 NDB 原生协议的接口;
- MySQL 集群(MySQL Cluster):
- MySQL 服务器
- NDB 集群存储引擎
- 分布式的、share-nothing 的、容灾的、高可用的 NDB 数据库的组合