繁体   English   中英

Mysql搜索 - InnoDB和事务与MyISAM进行FULLTEXT搜索

[英]Mysql Search - InnoDB and transactions vs MyISAM for FULLTEXT search

我目前正在研究为我的php项目提供高级搜索的最佳方法。

我已经缩小到使用FULLTEXT搜索而不是使用LIKE来查找表行中的匹配字符串。 然而,为了做到这一点,似乎我需要牺牲使用InnoDB引擎,这将使我失去交易和表关系的ACIDity。

是否真的值得使用MYISAM mysql引擎,或者有更好的方法来提供搜索功能。

任何指针将不胜感激!

这实际上取决于应用程序......使用MyISAM进行任何需要参照完整性的事情都是即时失败。 与此同时,它的文本搜索是不是所有的效率。

基本上,有两种方法可以去。 如果您发现不需要真正的参照完整性,请考虑使用NoSQL数据存储。 MongoDB是一个很棒的文档存储数据库。

另一方面,如果您确实需要参照完整性,但还需要快速索引的全文搜索,那么最好使用SphinxApache 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月发布)。 看到:

http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM