选择合适的搜索引擎

大部分情况下,InnoDB都是正确的选择,所以Oracle 在MySQL 5.5版本时终于将InnoDB作为默认的存储引擎了。对于如何选择存储引擎, 可以简单地归纳为一句话:“除非需要用到某些InnoDB不具备的特性,并且没有其他办 法可以替代,否则都应该优先选择InnoDB引擎”。例如,如果要用到全文索引,建议优 先考虑InnoDB加上Sphinx的组合,而不是使用支持全文索引的MylSAM。当然,如果 不需要用到InnoDB的特性,同时其他引擎的特性能够更好地满足需求,也可以考虑一 下其他存储引擎。举个例子,如果不在乎可扩展能力和并发能力,也不在乎崩溃后的数 据丢失问题,却对InnoDB的空间占用过多比较敏感,这种场合下选择MylSAM就比较 合适。


除非万不得已,否则建议不要混合使用多种存储引擎,否则可能带来一系列复杂的问题, 以及一些潜在的bug和边界问题。存储引擎层和服务器层的交互已经比较复杂,更不用 说混合多个存储引擎了。至少,混合存储对一致性备份和服务器参数配置都带来了一些 困难。


如果应用需要不同的存储引擎,请先考虑以下几个因素。


事务

如果应用需要事务支持,那么InnoDB (或者XtraDB)是目前最稳定并且经过验证 的选择。如果不需要事务,并且主要是SELECT和INSERT操作,那么MylSAM是不错的选择。一般日志型的应用比较符合这一特性。


备份


备份的需求也会影响存储引擎的选择。如果可以定期地关闭服务器来执行备份,那么备份的因素可以忽略。反之,如果需要在线热备份,那么选择InnoDB就是基本的要求。

崩溃恢复


数据量比较大的时候,系统崩溃后如何快速地恢复是一个需要考虑的问题。相对而言, MylSAM崩溃后发生损坏的概率比InnoDB要高很多,而且恢复速度也要慢。因此,即使不需要事务支持,很多人也选择InnoDB引擎,这是一个非常重要的因素。


特有的特性

最后,有些应用可能依赖一些存储引擎所独有的特性或者优化,比如很多应用依赖 聚簇索引的优化。另外,MySQL中也只有MylSAM支持地理空间搜索。如果一个存储引擎拥有一些关键的特性,同时却又缺乏一些必要的特性,那么有时候不得不 做折中的考虑,或者在架构设机做一些取某些存储引擎法直接支持的特性有时候通过变通也可以满足需求。


如果无法确定,那么就使用InnoDB,这个 默认选项是安全的,尤其是搞不清楚具体需要什么的时候。


你可能感兴趣的:(选择合适的搜索引擎)