Mysql Suche - InnoDB und Transaktionen vs MyISAM für FULLTEXT Suche

8

Ich recherchiere derzeit über die besten Möglichkeiten, um eine erweiterte Suche nach meinem PHP-Projekt zu ermöglichen.

Ich habe es auf die FULLTEXT-Suche beschränkt, anstatt LIKE zu verwenden, um übereinstimmende Zeichenfolgen in einer Tabellenzeile zu finden. Um dies zu tun, muss ich jedoch mit der InnoDB-Engine opfern, wodurch ich die SÄURE von Transaktionen und Tabellenbeziehungen verlieren werde.

Lohnt es sich wirklich, die mysql-Engine von MYISAM zu verwenden oder gibt es bessere Möglichkeiten, Suchfunktionen bereitzustellen?

Irgendwelche Hinweise würden geschätzt werden!

    
Daniel West 05.01.2012, 22:04
quelle

3 Antworten

7

Es hängt wirklich von der Anwendung ab ... Die Verwendung von MyISAM für alles, was referentielle Integrität benötigt, ist ein sofortiger Fehler. Gleichzeitig ist die Textsuche nicht all so effizient.

Grundsätzlich gibt es zwei Möglichkeiten. Wenn Sie feststellen, dass Sie keine echte referenzielle Integrität benötigen, ziehen Sie einen NoSQL-Datenspeicher in Betracht. MongoDB ist eine großartige Dokumentenspeicher-Datenbank.

Wenn Sie hingegen referenzielle Integrität benötigen, aber auch eine schnelle, indizierte Volltextsuche benötigen, sollten Sie Sphinx oder Apache Solr , um einen indizierten Cache für die Volltextsuche zu erstellen.

Wie auch immer, ich halte MyISAM für einen älteren Datenspeicher. Ich würde es nicht für ein neues Projekt verwenden. YMMV.

    
Jason Lewis 05.01.2012, 22:12
quelle
3

MyISAM hat mehrere Nachteile - Mangel an Transaktionsunterstützung, Sperren auf Tabellenebene, die es sehr langsam macht, wenn der Lese- / Schreib-Lasttyp stark ist. Eine weitere Unannehmlichkeit von MyISAM-Tabellen - sie sind nicht absturzsicher, so dass Sie im Falle eines unerwarteten Herunterfahrens oder eines Stromausfalls auf dem Server einige Daten verlieren können. MyISAM ist jedoch bei einigen Abfragen sehr schnell.

In Bezug auf die FullText-Suche würde ich vorschlagen, InnoDB + externe Suchmaschine wie Lucene oder Sphinx zu verwenden, so dass Sie von einer sicheren und zuverlässigen Speicher-Engine und schnellen Volltext-Abfragen profitieren können.

Für einen schnellen Start mit InnoDB und Sphinx können Sie auf Ссылка

    
vfedorkov 06.01.2012 00:26
quelle
3

MySQL 5.6 unterstützt FULLTEXT-Indizes mit InnoDB (veröffentlicht im Februar 2013). Siehe:

Ссылка

    
Morgan Tocker 18.11.2013 23:01
quelle