Hallo!
Habe in einer Staging-Umgebung eine Shopware-Installation von 5.4.4 auf 5.5.10 aktualisiert. (Höher geht leider nicht aufgrund fehlendem MySQL 5.7 bei DomainFactory).
Hat alles soweit gut geklappt, nur wenn ich im Backend die Kundenliste aufrufe, braucht er beim ersten Aufruf der Liste sehr lange, ca. 50 Sekunden.
Bei erneutem Aufruf lädt die Liste dann ganz normal, vermutlich weil der MySQL-Cache dann greift.
Im Logfile hab ich keine Fehler gefunden, aber im MySQL Slow Query Log wird mir der SQL-Aufruf der Kundenliste angezeigt.
Query-Zeit: 00:00:54
Zeilen gesendet: 20
Zeilen verarbeitet: 324516
SELECT DISTINCT s0_.id AS id_0, s1_.name AS name_1, s2_.description AS description_2, s3_.countryname AS countryname_3, s0_.id AS id_4 FROM s_user s0_
LEFT JOIN s_core_shops s1_ ON s0_.subshopID = s1_.id
LEFT JOIN s_user_addresses s4_ ON s0_.default_billing_address_id = s4_.id
LEFT JOIN s_core_countries s3_ ON s4_.country_id = s3_.id
LEFT JOIN s_user_attributes s5_ ON s0_.id = s5_.userID
LEFT JOIN s_core_customergroups s2_ ON s0_.customergroup = s2_.groupkey
ORDER BY s0_.id DESC LIMIT 18 OFFSET 0
Die Tabellen an sich sehen normal aus, es sind auch alle entsprechenden Indexe gesetzt. Von der Anzahl der Datensätze her, würd ich sagen ist das auch ganz normal:
s_user = ca. 50.000
s_core_shops = 1
s_core_customergroups = 2
s_core_countries = 251
s_user_addresses = ca 59.000
s_user_attributes = ca 6.900
Als Test habe ich den SQL-Befehl mal zerlegt um den Übeltäter zu lokalisieren und sobald ich folgende Zeile entferne läuft die Abfrage direkt durch:
LEFT JOIN s_core_customergroups s2_ ON s0_.customergroup = s2_.groupkey
Aber sowohl s_user.customergroup als auch s_core_customergroups.groupkey haben einen Index gesetzt. Bei den Feld s_core_customergroups.groupkey gibt es auch keine seltsamen Einträge, jeweils nur die beiden Werte EK (Shopkunden) bzw. H (Händler)
Wenn ich die gleiche SQL-Abfrage statt über den Staging-Shop über den Live-Shop laufen lasse, braucht er auch ca. 50 Sekunden, was naheliegt das die Abfrage sich bei Shopware geändert hat.
Hilfreich wäre noch zu wißen, wo die Abfrage im Core in welcher Datei steht, dann könnte ich überprüfen ob sich was bei der Abfrage innerhalb von Shopware geändert hat. Aber da hab ich keine Ahnung, wo das genau zu suchen wäre.
Im Issue-Tracker hab ich auch schon mal geschaut, aber nichts passendes gefunden.
Aber so langsam bin ich mit meinem Latein am Ende und weiß nicht was ich noch überprüfen könnte.
Gibt es hier vielleicht noch ein Tipp was man testen bzw. prüfen könnte? Vielleicht ist es auch ein reines MySQL-Performance-Problem bei DomainFactory?