Langsame Suchfunktion in xt:commerce 3

Tags: Allgemein | Debian (Linux) | MySQL | MySQL-Server | Webserver | xt:Commerce Kommentieren

Ein Kunde hatte das Problem, dass der auf unserem Server installierte xt:commerce 3 teilweise so hohen Datenbank-Load verursachte, dass der MySQL-Server abrauchte und somit den ganzen Server kurzzeitig in einer Nicht-Erreichbarkeit stürzte. Zwar war schon länger ein Update auf eine neue xt:commerce-Version geplant, jedoch befand sich der neue Shop noch in der Entwicklung und es musste kurzfristig eine Lösung erarbeitet werden, da die Ausfälle sich häuften (teilweise bis zu 3x am Tag).

Relativ schnell entpuppte sich die Suchfunktion des xt:commerce als ausschlaggebend, welche bei meinen Tests bei einer Volltextsuche meist zwischen 40 und 50 Sekunden benötigte, dabei den MySQL-Server komplett belastet – nun stelle man sich dies am Tages-Hoch mit hunderten Besuchern vor.

Mit den folgenden Umstellungen in der MySQL-Datenbank lässt sich die Suche durch einfaches Setzen von Indizes stark beschleunigen:

Tabelle „products_description„:

  • products_id
  • language_id
  • products_name
  • products_description (FULLTEXT)
  • products_short_description (FULLTEXT)
  • products_keywords

Tabelle „products_options„:

  • language_id
  • products_options_name

Tabelle „products_attributes„:

  • products_id
  • options_id

Tabelle „products_options_values„:

  • language_id
  • products_options_values_name

Tabelle „specials„:

  • products_id

Wichtig ist, dass die neuen Indexes eine möglichst hohe Kardinalität besitzen (also viele verschiedene Werte), damit eine Performancesteigerung erreicht werden kann.

Quellen

  • http://forums.xt-commerce.com/topic/60364-suchfunktion-sehr-langsam-sessions/
  • http://thomas.eses.name/mysql-indexe-richtig-setzen/

TOP