[英]Does MySQL's FULLTEXT search return the same results for MyISAM and InnoDb?
[英]Mysql Search - InnoDB and transactions vs MyISAM for FULLTEXT search
我目前正在研究为我的php项目提供高级搜索的最佳方法。
我已经缩小到使用FULLTEXT搜索而不是使用LIKE来查找表行中的匹配字符串。 然而,为了做到这一点,似乎我需要牺牲使用InnoDB引擎,这将使我失去交易和表关系的ACIDity。
是否真的值得使用MYISAM mysql引擎,或者有更好的方法来提供搜索功能。
任何指针将不胜感激!
这实际上取决于应用程序......使用MyISAM进行任何需要参照完整性的事情都是即时失败。 与此同时,它的文本搜索是不是所有的效率。
基本上,有两种方法可以去。 如果您发现不需要真正的参照完整性,请考虑使用NoSQL数据存储。 MongoDB是一个很棒的文档存储数据库。
另一方面,如果您确实需要参照完整性,但还需要快速索引的全文搜索,那么最好使用Sphinx或Apache Solr为全文搜索创建索引缓存。
不管怎样,我认为MyISAM是一个遗留数据存储区。 我不会在新项目中使用它。 因人而异。
MyISAM有几个缺点 - 缺少事务支持,表级锁定使得它在繁重的读取和写入负载类型中非常慢。 MyISAM表的另一个不便之处 - 它们不是崩溃安全的,因此在服务器意外关闭或断电时可能会丢失一些数据。 然而,MyISAM在一些查询上非常快。
关于FullText搜索,我建议使用InnoDB +外部搜索引擎,如Lucene或Sphinx,这样您就可以从安全可靠的存储引擎和快速全文查询中受益。
有关InnoDB和Sphinx的快速入门,请参阅http://astellar.com/2011/12/replacing-mysql-full-text-search-with-sphinx/
MySQL 5.6支持InnoDB的FULLTEXT索引(2013年2月发布)。 看到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.