Innodb数据库
具备提交、回滚和崩溃恢复能力的事务安全、支持外键。使用mvcc以及行锁来提供事务支持,所以支持高并发。适用于写频繁,并发率高的应用。安全
Myisam服务器
不支持事务和灾难自动恢复,但其访问速度快,支持全文索引,对事务完整性没有要求。 一般用于读频繁的数据库,如数据仓库等。并发
Memorymvc
使用存在内存中的内容来建立表,表访问很是得快,由于它的数据是放在内存中的,而且默认使用HASH索引。可是一旦服务关闭,表中的数据就会丢失掉。 。适用于临时的,须要频繁读写,对性能速度要求严格的应用中,如一些统计操做的中间结果表高并发
并发性能
若是最好的知足你的并发性需求取决你的工做量了。若是你仅仅是并发的插入和读取。无论相信与否 ,MyISAM是最好的了。若是你让这些操做互不干扰,就应该选择一个支持行锁的引擎。某些应用程序比其余应用程序具备不少的颗粒级锁定要求(如行级锁定)。选择正确的锁定策略可以减小开销,并有助于总体性能的提高。它还包括对多种能力的支持,如多版本并发性控制或“快照”读取优化
事务支持:spa
并不是全部的应用程序都须要事务,但对的确须要事务的应用程序来讲,有着定义良好的需求,如ACID兼容等。索引
备份
有规律的备份也影响表的引擎选择。若是服务器关闭,而且按期的备份,存储引擎很容易处理。若是 你须要在线备份并从一个格式转换为另外一个。这个选择就不明智了。之后会详细说这部分。
要考虑多引擎所引发的备份和服务器调整的复杂性。
错误恢复
若是你有不少数据,你要考虑错误恢复的时间。MyISAM相对于InnoDB很是容易崩溃并且从崩溃中恢复的时间很是慢,这就是为何有的人即便不使用事务处理也要用InnoDB了。
特殊功能
最终,你可能发现有的应用须要依靠一些MySQL存储引擎特殊的功能和优化,举个例子,有的应用程序 很是依赖于集群的索引优化。这时候,你只能在InnoDB和solidDB选择了。另外一方面,只有MyISAM支持全 文索引。若是一个存储引擎遇到了一个或多个苛刻的需求,对于其余并不算是,那么你就要选一个折中的 方案或者找到一个好的解决方案。一般你能从看上去不知足你的需求的存储引擎,找到你所须要的。