相信绝大数人都只知道两种引擎,做得久点的运维工程师可能会知道五种,对MySQL进行了研究发现原来还有很多其他的引擎适合使用。分析各自优缺点,根据各自喜好选择适合自己的引擎。
例举当前在不同版本中的各种引擎。

1、InnoDB
优点:特点是支持ACID事务,聚集索引、支持外键
缺点:不支持全文索引,不保存表行数
2、mylsam
优点:全文索引,非聚集索引、查询速度快
缺点:不支持事务、不支持外键
以上两种引擎是用的主流引擎,大家再选择的时候一般都会犹豫,在MySQL5.6开始默认引擎就是InnoDB
总体来说如果存放的不是什么重要数据,需要高效的查询,可以使用mylsam,一般还是使用InnoDB,大不了在添加redis等cahce技术。
3、merge
Merge存储引擎把一组mylsam数据表当做一个逻辑单元来对待,可以同时对他们进行查询。构成一个merge数据表结构的各成员mylsam数据表必须具有完全一样的结构。每一个成员数据的数据列必须按照同样的顺序定义同样的名字和类型,索引也必须按照同样的顺序和同样的方式定义。
4、memory
MySQL merge表优点:①分离静态的和动态的数据,②利用结构接近的数据来优化查询,③查询时可以访问更少的数据,④更容易维护大数据集,⑤可以通过修改.mrg文件来修改merge表,当然也可以用alter进行修改,修改后要通过flush tables刷新表缓存,此法可以动态增加减少子表
Memory存储引擎将表的数据存放在内存中能像会话或缓存一样方便操作和管理,充分发挥内存引擎的特点——速度快,延迟低;仅仅读或写为主的访问模式。
5、CSV
CSV存储引擎可以将CSV文件作为MySQL的表进行处理。存储格式就是普通的CSV文件
特点:①以CSV格式进行数据存储、②所有的列必须都是不能为null的、③不支持索引,不适合大表,不适合在线处理、④可以对数据文件直接编辑
6、archive
Archive存储引擎基本上用于数据归档;它的压缩比非常的高,存储空间大概是InnoDB的10-15分之一所以它用来存储历史数据非常的适合,由于它不支持索引同时也不能缓存索引和数据,所以它不适合作为并发访问表的存储引擎。archive存储引擎使用行锁来实现高并发插入操作,但是它不支持事务,其设计目标只是提供高速的插入和压缩功能。
7、blackhole
黑洞引擎,学习过网络的同学大概听过黑洞路由器,在Linux系统中接触过/dev/null,这个引擎和这一样,表不保存数据库,主要作用是如果主被模式slave节点过多,通过blachole减轻master的压力。
8、EXMPLE
这是一个示例引擎,开发人员需要查看的,主要可以了解新的引擎是怎么开发的,让自己开发自己的引擎。
9、federated
主要是用于和远程数据库链接的引擎
10、ndb
11、ndbcluster
NDB和NDBCLUSTER都是MySQL群集使用的引擎
















