Neu JTL Shop 5 - Datenbank optimieren

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
138
7
Oldenburg
Hallo liebe JTL-Community,

Hab ein Upgrade von JTL Shop 4.0.6 Build 17 auf JTL Shop 5 durchgeführt.
Die Merkmalfilter sind jetzt viel präsenter und machen laut SQL-Query Log Probleme, sind also Slow Queries.
Es wird Redis als Caching System verwendet und PHP 7.4 mit fast-cgi.

Ein extrem langsamer query sieht so aus.

SELECT tseo.cSeo,
ssMerkmal.kHersteller,
ssMerkmal.cName,
ssMerkmal.nSortNr,
ssMerkmal.cBildPfad,
COUNT(*) AS nAnzahl
FROM (SELECT thersteller.kHersteller, thersteller.cName, thersteller.nSortNr, thersteller.cBildPfad, tartikel.kArtikel
FROM tartikel
#JOIN from JTL\Filter\States\BaseCharacteristic::getSQLJoin
JOIN (SELECT kArtikel
FROM tartikelmerkmal
WHERE kMerkmalWert = 208
GROUP BY tartikelmerkmal.kArtikel
) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel

#JOIN from JTL\Filter\States\BaseManufacturer::getOptions
JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller

#join from SORT by bestseller
LEFT JOIN tbestseller ON tartikel.kArtikel = tbestseller.kArtikel

#product visiblity join from getBaseQuery
LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel
AND tartikelsichtbarkeit.kKundengruppe = 1
WHERE tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 AND (tartikel.cLagerBeachten != 'Y'
OR tartikel.fLagerbestand > 0
OR (tartikel.cLagerVariation = 'Y'
AND (
SELECT MAX(teigenschaftwert.fLagerbestand)
FROM teigenschaft
INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft
WHERE teigenschaft.kArtikel = tartikel.kArtikel
) > 0
))
#default group by
GROUP BY tartikel.kArtikel

#limit sql
ORDER BY tbestseller.fAnzahl DESC, tartikel.cName) AS ssMerkmal
LEFT JOIN tseo
ON tseo.kKey = ssMerkmal.kHersteller
AND tseo.cKey = 'kHersteller'
AND tseo.kSprache = 2
GROUP BY ssMerkmal.kHersteller
ORDER BY ssMerkmal.nSortNr, ssMerkmal.cName


Es handelt sich um über 46.000 Artikel mit tartikelmerkmal 479.000 Merkmaldaten. Der JTL Shop 4 lief meist mit 5% CPU jetzt sind es 100% CPU bei diesen slow-queries, welche schon eine Stunde bis zu mehreres Stunden laufen können je nach Anzahl dieser Slow-Queries. Ebenfalls als langsam habe ich folgende Anfrage identifiziert.

SELECT tartikel.kArtikel
FROM tartikel
#JOIN from JTL\Filter\States\BaseCharacteristic::getSQLJoin
JOIN (SELECT kArtikel
FROM tartikelmerkmal
WHERE kMerkmalWert = 207
GROUP BY tartikelmerkmal.kArtikel
) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel

#join from JTL\Filter\Items\Category::getSQLJoin
JOIN tkategorieartikel ON tartikel.kArtikel = tkategorieartikel.kArtikel

#join from JTL\Filter\Items\Characteristic::getSQLJoin
JOIN tartikelmerkmal ON tartikel.kArtikel = tartikelmerkmal.kArtikel

#join from SORT by bestseller
LEFT JOIN tbestseller ON tartikel.kArtikel = tbestseller.kArtikel

#product visiblity join from getBaseQuery
LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel
AND tartikelsichtbarkeit.kKundengruppe = 1
WHERE
#condition from filter kf
tkategorieartikel.kKategorie IN (307) AND
tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (86)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition Schmuck in braun
AND
tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (210)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition Erwachsene
AND tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 AND (tartikel.cLagerBeachten != 'Y'
OR tartikel.fLagerbestand > 0
OR (tartikel.cLagerVariation = 'Y'
AND (
SELECT MAX(teigenschaftwert.fLagerbestand)
FROM teigenschaft
INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft
WHERE teigenschaft.kArtikel = tartikel.kArtikel
) > 0
))
#default group by
GROUP BY tartikel.kArtikel

#limit sql
ORDER BY tbestseller.fAnzahl DESC, tartikel.cName


Haben andere solche Probleme auch bemerkt? Der Komplette Server läuft mit 100% CPU und timed out teilweise komplett out mit HTTP-CODE 524 / 504.

Wie kriege ich diese Abfragen beschleunigt?
exmined_rows also untersuchte Zeilen sind teilweise 700.000.000 Stück für eine einzelne Abfrage, scheint an den subqueries im FROM zu liegen.
Eingesetzt wird MariaDB 10.5.8 (teilweise restartet der Datenbankserver alleine)

7a41531b-3a90-48a6-bfcb-4c8dfc7004d4.jpg
JTL Shop 4 zu JTL Shop 5 - der Unterschied.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: hula1499

2275

Aktives Mitglied
8. April 2015
6
1
Hallo,

da wir das selbe Problem haben, möchte ich gerne wissen, ob es bei euch mittlerweile behoben wurde.

Beste Grüße
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
941
156
Halle (Saale)
Habt ihr mal im Backend unter /admin/dbcheck.php alle Tabellen zumindest analysiert?
Durch geänderte Key-Strukturen kann das beim Update von 4 auf 5 einen gewaltigen Unterschied machen.
 

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
138
7
Oldenburg
Habt ihr mal im Backend unter /admin/dbcheck.php alle Tabellen zumindest analysiert?
Durch geänderte Key-Strukturen kann das beim Update von 4 auf 5 einen gewaltigen Unterschied machen.
Ihr solltet eventuell in euren JTL Shop Guide schreiben, das bei einem Serverumzug die Datenbank z.B. bei MariaDB 10.5 die Datenbank query -> "statistics" ausführt und dieser Prozess sehr CPU-hungrig ist selbst bei einem 16 Kern Rechner mit 32 Threads können ~ 48.000 (1 Sprache) * Anzahl der Sprachen zu einer Downtime von vielen Stunden führen.

2021-04-04 15_19_19-REMOTE_ _BLUDAU MEDIA CORE 04_ - HeidiSQL 11.2.0.6233.png
 

seoseed.de

Gut bekanntes Mitglied
20. Oktober 2007
579
1
Buchholz
hatte das Problem ähnlich mit Prozessen die niemals enden bzgl. Merkmalwerten. Nach 2 unbeantworteten Tickets habe ich mich auf die Suche gemacht. Letztendlich waren es Merkmale die veraltet in der ShopDB dümpelten und select querys auslösten die mitunter stundenweise liefen und nur über kill beendet erden konnten. Haben bei mir den Server in die Knie gezwungen.

Ich empfehle tatsächlich Merkmale in der Shop DB händisch zu löschen und aus der Wawi neu zu übertragen.

Tipp: schaut euch die Processlist der DB an.
 

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
138
7
Oldenburg
hatte das Problem ähnlich mit Prozessen die niemals enden bzgl. Merkmalwerten. Nach 2 unbeantworteten Tickets habe ich mich auf die Suche gemacht. Letztendlich waren es Merkmale die veraltet in der ShopDB dümpelten und select querys auslösten die mitunter stundenweise liefen und nur über kill beendet erden konnten. Haben bei mir den Server in die Knie gezwungen.

Ich empfehle tatsächlich Merkmale in der Shop DB händisch zu löschen und aus der Wawi neu zu übertragen.
Ich habe mehrere Serverumzüge gemacht, das Problem besteht wohl bei MariaDB für Version 10.5 das setze ich immer ein in Kombination von InnoDB auch die Migration von JTL Shop 4 zu JTL Shop 5 kann das zeitversetzt auslösen.

Die Prozesse nicht killen, die "respawnen" einfach erneut, zeitverzögert, würde eher sagen die Logik von MariaDB beim Umwandeln von myISAM auf InnoDB Datenbank Engine sollte das besser hinbekommen. Plesk Migrator Serverumzüge kopieren glaube ich die ibdata nicht mit, somit wird die komplette Datenbank Struktur für den Arbeitsspeicher erneut aufgebaut.

Empfehle die Datenbank in Ruhe zu lassen nix killen, das Problem kehrt zurück, ich weiß nicht genau ob die Querys nen Zwischenergebnis speichern.
Wenn das erstmal durchgelaufen ist, ist auch Ruhe und alles ist super schnell (mit z.B. mit Redis)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu hreflang fehlt: Mehrsprachigkeit JTL Shop 5.0.0 JTL-Shop - Fehler und Bugs 2
Beantwortet NOVA unter JTL Shop 5 zeigt auf Startseite nur Header und Footer JTL-Shop - Fehler und Bugs 2
Neu Warning: Invalid argument supplied for foreach() in /home/.sites/298/site8438217/web/classes/class.JTL-Shop.Artikel.php on JTL-Shop - Fehler und Bugs 1
Neu JTL Shop 5: Pflichtfreitext-Angabe des Kunden verschwindet im Warenkorb & demnach auch in Bestellung + WAWI JTL-Shop - Fehler und Bugs 2
Neu Warum nimmt der JTL Shop teilweise keine Preisaktualisierungen von JTL wawi an? JTL-Wawi - Fehler und Bugs 1
Neu JTL-SHOP 5 - Checkbox Text für 3. Sprache wird nicht gespeichert JTL-Shop - Fehler und Bugs 5
Neu Wo/Wie wird der Lizenzschlüssel bei einem Upgrade der CFE auf die JTL Shop Standardversion eingetragen? Installation / Updates von JTL-Shop 4
Neu JTL Shop 5 - Container mit Link versehen - wie geht das Allgemeine Fragen zu JTL-Shop 3
Neu Performance JTL Shop 5 - 200.000 ms Idle Wert?! Plesk Strato Betrieb / Pflege von JTL-Shop 2
Neu [JTL Shop 5] Filter-URLs sind nicht nofollow JTL-Shop - Fehler und Bugs 4
Neu JTL-Shop-Hosting Plesk Git dump-autoload Allgemeine Fragen zu JTL-Shop 0
Neu Anleitung Cleverreach an JTL Shop v.4 Plugins für JTL-Shop 0
Neu Bestellstatus wird bei Teillieferungen zwischen WAWI und JTL-Shop 5.0.1 nicht richtig synchronisiert JTL-Shop - Fehler und Bugs 0
Neu [JTL Shop 5] "Meine Käufe": doppelter Eintrag unter "Gebundene Lizenzen" JTL-Shop - Fehler und Bugs 0
Neu Deprecated: JTL\Shop::DB is deprecated. Upgrade JTL-Shop4 auf JTL-Shop5 1
JTL-Shop 5.0.1 mit Wawi 1.5.44.0 verbinden - Shop URL verweist nicht auf gültigen Shop Einrichtung JTL-Shop5 9
Spezialseite "Kontakt" nach Upgrade von JTL Shop 4 auf 5 Einrichtung JTL-Shop5 1
Neu [JTL SHOP 5] Sitemap kann nicht automatisch erstellt werden JTL-Shop - Fehler und Bugs 3
Neu Internet Explorer + JTL Shop 5 = Bestellabschluss nicht möglich JTL-Shop - Fehler und Bugs 1
Neu JTL Software + Shop + Ebay/Amazon lohnt sich das? Starten mit JTL: Projektabwicklung & Migration 3
Neu JTL SHOP 5 NOVA - keine Preisspanne, kein ab Technische Fragen zu Plugins und Templates 0
Neu Upgrade auf ebay-Shop / Verhalten in JTL? eBay-Anbindung - Ideen, Lob und Kritik 1
Neu Automatische Abmeldung aus der JTL Shop Administration verhindern Allgemeine Fragen zu JTL-Shop 2
Neu [JTL-Shop 5] Mediendateien anzeigen unter Artikelbeschreibung - 2 Column Layout bei zwei Mediendatein? JTL-Shop - Ideen, Lob und Kritik 0
Neu [JTL-Shop 5] OPC Portlets auch in Tabs ermöglichen, die in der Wawi als Attribute angelegt sind (tab1 name, tab2 name, etc) JTL-Shop - Ideen, Lob und Kritik 2
Neu Ladezeit Shop - Plesk --> JTL 5 (STRATO) JTL-Shop - Fehler und Bugs 5
Neu PayPal Ratenzahlung Anbindung an JTL-Shop 4 User helfen Usern - Fragen zu JTL-Wawi 1
Neu Transferring the customer account credit from shop to JTL WAWI User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL Shop 5 - Consentmanager.de Technische Fragen zu Plugins und Templates 1
Neu Passwort Sicherheit im JTL Shop User helfen Usern - Fragen zu JTL-Wawi 3
Neu PayPal Plus wird GAR nicht anzeigt - JTL Shop 4 JTL-Shop - Fehler und Bugs 0
Neu JTL Shop 5.0.1 Nova-Template Slick Slider Bildgröße fehlerhaft JTL-Shop - Fehler und Bugs 1
Neu JTL-Shop 5.0 - Release 5.0.2 Upgrade JTL-Shop4 auf JTL-Shop5 4
Kostenlose Einsteigerschulung: Tag 7 Teil 1: Einführung in JTL-Shop 5 mit OPC Messen, Stammtische und interessante Events 0
Neu JTL Shop 5 Artikelanzeigefilter Betrieb / Pflege von JTL-Shop 0
Neu JTL Shop 5 OPC Akkordeon: Reihenfolge der Gruppen JTL-Shop - Ideen, Lob und Kritik 1
Neu JTL Shop 5 Unterkategorien in der Navileiste Allgemeine Fragen zu JTL-Shop 4
Neu JTL Shop 4.6.17 Fatal Error bei Artikelexport JTL-Shop - Fehler und Bugs 2
Neu Problem: Wie die Versandarten aus dem JTL Shop mit den WaWi Versandarten verknüpfen? User helfen Usern - Fragen zu JTL-Wawi 2
Gelöst JTL Shop 5 PayPal Express mit aktiviertem Cache JTL-Shop - Fehler und Bugs 3
Neu Freelancer für JTL Shop 5 Template Anpassungen gesucht Dienstleistung, Jobs und Ähnliches 0
Neu Plugin Hinweis Fenster JTL Shop 4 Allgemeine Fragen zu JTL-Shop 1
Neu Linkfarbe im Header und Footer ändern - JTL Shop 5? Allgemeine Fragen zu JTL-Shop 7
Neu JTL Shop 5 NOVA: Child-Datei für Preisanzeige ohne Rabatt gesucht Dienstleistung, Jobs und Ähnliches 0
Neu JTL Shop 5 Warnungen in der Console JTL-Shop - Fehler und Bugs 2
Neu JTL Shop 5 NOVA: Anmeldebutton soll gegen anderes Icon getauscht werden Templates für JTL-Shop 1
Neu JTL Shop 4 - Versandart Abholung nur Barzahlung -> Kunde kann trotzdem mit PayPal zahlen JTL-Shop - Fehler und Bugs 2
Neu JTL Shop 5 Theme Editor Nova Template Farbe Buttons Templates für JTL-Shop 6
Zustimmung der Weitergabe der eMail an Versanddienstleister im JTL Shop 5.0 Einrichtung JTL-Shop5 4
Neu Artikel im JTL-Shop nicht sichtbar... User helfen Usern - Fragen zu JTL-Wawi 3

Ähnliche Themen