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 数据库的组合