1. Archive引擎
只支持Insert和select操作,5.1之前不支持索引,缓存所有的写并利用zlib对插入的进行压缩,myIsam表磁盘I/O更少。查全表扫描;适合日志和数据采集应用,做数据分析进行全表扫描。或者更快的Insert场景下使用。
支持行级锁和专用的缓冲区,可实现高并发插入。在一个查询开始到结束之间,Archive引擎回阻止其他select执行,一致性读。批量插入之前对读的操作时不可见的。这种机制模仿了事务和MVCC特性。不是一个事务性引擎,是一个针对高速插入和压缩做了优化的引擎。
2. Blackhole引擎
无存储机制,删插入数据,不保存。服务器记录Blackhole表,做数据复制到备库,或者记录日志。复制架构和日志审核时发挥作用,使用时会出现很多问题,不推荐使用。
3. csv引擎
可以将csv文件当作普通表处理,不支持索引。数据库运行时可以进行拷入或拷出。可以作为书交换的机制。
4.Federrated引擎
访问mysql服务器的一个代理
5.Memory引擎
特性:快速的访问数据,数据不会被修改,重启数据不丢失(以前叫heap表),支持Hash索引
缺点:表级锁,并发写入性能低,不支持BLOB和TEXT类型的列,每行长度固定。
比myisam快一个数量级,数据保存内存中,不进行磁盘io
使用场景:
mysql查询过程中用临时表保存中间结果,内部使用的临时表就是Memory表,中间结果集太大Memory表将转MyIsam表。
6. Merge引擎
MyIsam的一个变种,有多个MyIsam表合并的虚拟表,可以做日志或者数据仓库类应用,引入分区后该引擎放弃了。
7.NDB集群引擎
sql和ndb原生协议之间的接口。
OLTP类引擎
Percona的XtraDB基于InnoDB改进版本,改进点:性能、可测量性和操作灵活性方面XtraDB可以作为InnoDB的完全替代品,兼容InnoDB的读写(数据文件),支持InnoDB的所有查询。
TokuDB引用了分形树的索引数据结构,该结构与缓存无关,大小超过内存性能也不会降低,无内存生命周期和碎片问题。是一种大数据存储引擎,有很高的压缩比,可在很大的数据量上建立索引。
选择适合的引擎:
除非InnoDB不具备的特性,并无其它办法,否则只能InnoDB
如果要用全文索引,建议先考虑InnoDB加上Sphinx组合,而不是直接选择MyIsam,不在乎可扩展能力和并发,和崩溃数据丢失,对innodb占用内存特别敏感,就选择MyIsam。
事务
备份
崩溃恢复
特有特性
测试的指标
吞吐量(tps/tpm)
响应时间或者延迟
并发性
可扩展性