![](/img/trans.png)
[英]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.