Neu JTL Shop 5 - Datenbank optimieren

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
137
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
154
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
137
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
137
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 Forum Antworten Erstelldatum des Themas
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 0
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
Neu JTL Shop 5 PayPal Express mit aktiviertem Cache JTL-Shop - Fehler und Bugs 0
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 5
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
Neu JTL Shop 5 NOVA Footer Textfarbe Templates für JTL-Shop 3
Neu JTL Shop 5 PayPal Problem JTL-Shop - Fehler und Bugs 0
JTL Shop 5 unter "localhost" Fehler beim Setzen des Cookies Einrichtung JTL-Shop5 0
Neu Umzug JTL shop 5 auf anderen Server, gleiche Domain Installation / Updates von JTL-Shop 9
Neu JTL-Shop 5 Product Stream müsste verbessert werden JTL-Shop - Ideen, Lob und Kritik 0
Neu Jtl Shop Filter Allgemeine Fragen zu JTL-Shop 1
Neue Standard Schriftart dem JTL Shop 5 hinzufügen Einrichtung JTL-Shop5 1
Neu Export Staffelmenge und Staffelpreise aus dem JTL Shop 4 Allgemeine Fragen zu JTL-Shop 0
Neu Wie kann ich <meta name="google-site-verification" content="" /> in Head Bereich einfügen? JTL Shop Version 4.6 Allgemeine Fragen zu JTL-Shop 2
Neu JTL Shop "Auf Lager" Sticker ausblenden Allgemeine Fragen zu JTL-Shop 1
Neu Wawi Datenabgleich mit JTL Shop 5.0.1 nicht möglich - Fehler 8 JTL-Wawi - Fehler und Bugs 0
Neu Jtl Shop Kategorie Seiten Top Angebote/ Unsere Bestseller ausschalten Allgemeine Fragen zu JTL-Shop 1
Neu JTL Shop 5 NOVA-Template Kategorien als Menüpunkt Technische Fragen zu Plugins und Templates 6
Neu Artikelbeschreibung in JTL Shop vereinheitlichen User helfen Usern - Fragen zu JTL-Wawi 5
Kundenimport von JTL Wawi zu JTL Shop 5 Einrichtung JTL-Shop5 0
Neu Agentur sucht JTL-Shop Freelancer für die Betreuung von Kunden-Shops Dienstleistung, Jobs und Ähnliches 0
Neu Bildname beim JTL-Shop Blog/News Umstieg auf JTL-Shop 0
Neu JTL Shop 5 - Artikelnummer im Productstream auf Warenkorbseite überlappt Text JTL-Shop - Fehler und Bugs 1
Gelöst Produktliste - Text splitten oben und unten - JTL Shop 5 [gelöst] Templates für JTL-Shop 2
Neu Fehler bei JTL Rückübertragung der Zahlung in den Shop PrestaShop-Connector 5
kostenfreie JTL-Einsteigerschulung: Einführung in JTL-Shop 5 mit OPC Messen, Stammtische und interessante Events 0
Neu JTL SHOP Header bearbeiten Allgemeine Fragen zu JTL-Shop 3
Neu JTL Shop 4 PayPal Express Adressdaten Kunden JTL-Shop - Fehler und Bugs 0
JTL Shop 5 Webp Server Einrichtung JTL-Shop5 5
Neu ImageMagick - JTL Shop 5 - Installation / Updates von JTL-Shop 3
Neu Kundengruppen werden von JTL Wawi nicht nach JTL Shop 5 übertragen Onlineshop-Anbindung 4
Neu JTL Shop 5 - Paypal Bezahlvorgang nur Weißes Bild - Switchen verschiedener Versandarten verbuggt und und und JTL-Shop - Fehler und Bugs 3
Neu Logo Vergrößerung, Farbanpassung, Boxenverwaltung etc. im JTL Shop Allgemeine Fragen zu JTL-Shop 4
Neu JTL Shop 5 - Falsche Preise im Shop? JTL-Shop - Fehler und Bugs 5
Ähnliche Themen