簡體   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