Wäre Sphinx eine gute Lösung, um das Problem der Serverüberlastung durch umfangreiche MySQL-Lesevorgänge zu lösen?

Wäre Sphinx eine gute Lösung, um das Problem der Serverüberlastung durch umfangreiche MySQL-Lesevorgänge zu lösen?

Ich arbeite an einer Site, die meines Wissens täglich etwa 70.000 Mal besucht wird und die eine Menge Abfragen verwendet, die UNION'süber 45 verschiedene Tabellen nutzen. Diese Tabellen umfassen im Allgemeinen zwischen 15.000 und 500.000 Zeilen pro Tabelle.

Wir haben es query cacheso gut wie möglich optimiert, aber immer wenn eine der Tabellen geändert wird und die Daten im Cache entfernt werden müssen, beginnt der Server zu blockieren, MySQL tmp dirfüllt sich und die Serverlast steigt ins Unermessliche. Um das Problem zu beheben, muss Folgendes getan werden:

  1. MySQL stoppen (Last wird wieder normal)
  2. Reparieren Sie die Datenbanktabellen
  3. Cache von MySQL löschen
  4. Memcache leeren
  5. Datenbanktabellen erneut reparieren
  6. MySQL neu starten

Ich weiß, dass Replikation wahrscheinlich die beste Idee ist, aber wahrscheinlich auch die teuerste. Ich frage mich also, ob die Nutzung Sphinxvonhttp://sphinxsearch.com/würde sehr helfen?

Ich habe es zuvor für eine andere Site verwendet, damit ich eine Volltextsuche in INNODB-Tabellen durchführen konnte. Ich weiß also ein wenig, wie es funktioniert, bin mir aber nicht sicher, wie es mit so etwas umgehen würde.

Verwendet es seine eigenen Caching-Methoden? Ich würde nicht darauf umsteigen wollen und trotzdem dieselben Probleme mit Sphinx haben.

Bearbeiten:Unten sehen Sie einen Screenshot von EXPLAIN(die erste Zeile fehlt, es gab Probleme mit dem Screenshot-Programm)

Aktualisieren:Die Site hat derzeit nur 30.000 Besucher pro Tag.

Bildbeschreibung hier eingeben

Antwort1

Sie sollten die Datenbankprobleme identifizieren und lösen. 70.000 Besuche pro Tag sind nicht so viel und MySQL ist in der Lage, diese Menge an Arbeit zu bewältigen. Sie sollten mysqlreportein ähnliches Tool herunterladen und verwenden, um die Nutzung der MySQL MyISAM- und InnoDB-Puffer zu analysieren und zu optimieren (ich würde auch empfehlen, auf InnoDB umzusteigen, wenn Sie immer noch MyISAM verwenden). Der nächste Schritt besteht darin, die Protokollierung langsamer Abfragen in MySQL zu aktivieren und das Protokoll langsamer Abfragen täglich mithilfe des pt-query-digestTools und EXPLAINdes MySQL-Befehls zu analysieren. Wahrscheinlich fehlen Ihrer Datenbank die richtigen Indizes.

verwandte Informationen