Neu JTL Shop 5 - Datenbank optimieren

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
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
1.369
347
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
146
10
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
 

okh

Gut bekanntes Mitglied
20. Oktober 2007
588
4
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.
 
  • Gefällt mir
Reaktionen: Trigoda

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
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 Eigene Artikel Felder im JTL Shop anzeigen lassen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Hilfe bei der Entwicklung gesucht: Werde Tester für meine JTL-Shop Plugins Plugins für JTL-Shop 0
Neu JTL-Shop "Plugin-Vorlage" gesucht User helfen Usern 3
Neu JTL - Shop Adressprüfung - Erfahrungen ? Allgemeine Fragen zu JTL-Shop 2
Neu Wo ist JTL-Debug geblieben? Shopvariablen beim Shop-/Templateentwicklung sichtbar machen? Plugins für JTL-Shop 10
Neu Alte Produktbilder erscheinen im JTL-Shop trotz Löschung und neuem Upload immer wieder – JTL-Wawi enthält nur neue Bilder JTL-Wawi - Fehler und Bugs 16
Neu JTL Shop 5 Sync in JTL WAWI 2.0.0 zeigt Verbindungstest Fehlermeldung Onlineshop-Anbindung 4
Neu Rechnung im JTL Shop Kundenkonto Onlineshop-Anbindung 1
Neu Strukturierte Daten vom Typ "Produkt" werden nach Update auf JTL Shop 5.6.1 nur fehlerhaft erkannt JTL-Shop - Fehler und Bugs 3
Neu Wero für den JTL Shop? Plugins für JTL-Shop 21
Neu JTL-Shop Verkauf - Tipps? Business Jungle 5
Neu Kategoriestruktur auf JTL-Wawi in WooCommerce Shop darstellen WooCommerce-Connector 2
Neu DSGVO – Automatisierte Löschung von Kundendaten nach 10 Jahren (JTL-Wawi / JTL-Shop) User helfen Usern - Fragen zu JTL-Wawi 2
Artikel Eigene Felder kommen nur beim ersten Shopabgleich in den JTL-Shop JTL-Wawi 1.11 2
Neu welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL Allgemeine Fragen zu JTL-Shop 0
welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL JTL-Wawi 1.11 0
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 1
Neu WaWi - JTL Shop - Kein Abgleich des Artikelnamen möglich Onlineshop-Anbindung 1
Neu Wawi Synchronisation mit JTL Shop nicht möglich! seit 3 Stunden was kann man machen? Onlineshop-Anbindung 1
Neu Neues Plugin: Sauberes Meta-Tracking für JTL-Shop 5 (Pixel + CAPI + Consent) Plugins für JTL-Shop 0
Neu 📢 Plugin "Kreditlimit Plugin für JTL-Shop 5 " von CIN GmbH Plugins für JTL-Shop 0
Neu Wechsel von JTL Shop 5 zu Shopify / ERP-Connector Produkte mit Variationen werden nicht übertragen Shopify-Connector 1
Neu JTL-Connector + Shopware 6: Zweite Lizenz führt zu „Invalid credentials“ und blockiert bestehenden Shop Shopware-Connector 3
Neu Betatester gesucht – Hood-Schnittstelle für JTL-Shop 5 Plugins für JTL-Shop 3
Neu HTTP 500 auf /Kontakt – Route scheint intern noch zu existieren, JTL-Weiterleitung greift nicht Betrieb / Pflege von JTL-Shop 0
Direktupdate von JTL Wawi 1.10.11.0 auf 2.0 möglich? JTL-Wawi 2.0 4
Neu JTL-Wawi Update Historie User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL Shipping Fehler bei DHL Versand über WMS ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu [Tool] FloTax — eBay + Billbee → DATEV/Lexoffice | §25a | OSS | Reverse Charge | von JTL-Partner Dienstleistung, Jobs und Ähnliches 0
Fehlermeldung beim Anlegen einer zweiten JTL POS Kasse in JTL-Wawi JTL-Wawi 1.11 0
Neu JTL samt Kaufland & TikTok kurz hochschießen und dann schließen/abverkaufen? Business Jungle 7
Probleme mit JTL Worker JTL-Wawi 2.0 1
JTL Variantenartikel: Kein Preis im Schema.org („price fehlt“) – Ursache? Allgemeine Fragen zu JTL-Shop 2
(gelöst) Ecomdata - JTL Worker 2.0 - Startet nicht - Schließt ohne Fehlermeldung JTL-Wawi 2.0 2
Neu Update Wawi 1.10.16.0 auf 1.11.7 -> JTL-POS Einrichtung / Updates von JTL-POS 1
Neu Anbindung von JTL zu Metro (Rechnungen werden nicht zu Metro übertragen) User helfen Usern - Fragen zu JTL-Wawi 1
Neu Seit Update auf JTL-WaWi 2.0.0.0 keine Abholung der Kundendaten bei MediaSaturn-Bestellungen JTL-Wawi - Fehler und Bugs 5
Neu Best Practices für den Export und die Automatisierung von täglichen Berichten in JTL‑WaWi User helfen Usern - Fragen zu JTL-Wawi 2
Neu WebP Bilder von JTL zu Shopware Shopware-Connector 2
Mobile Web-App für JTL-WaWi — Aufträge, Artikel & Lager direkt vom Smartphone JTL-Wawi App 0
BUG in 2.0.0 - Rest Api Server startet nicht. JTL APP nicht benutzbar JTL-Wawi 2.0 4
JTL-Wawi eBay Fahrzeugverwendung (K-Typen) wird nicht aktiviert trotz Ameise-Import JTL-Wawi 1.10 0
eBay-Vorlagenfenster rechts abgeschnitten (JTL-Wawi 2.0) JTL-Wawi 2.0 6
Neu JTL STAMMTISCH BERLIN – 20.03.2026 Messen, Stammtische und interessante Events 0
JTL-Worker speichert Einstellungen nicht JTL-Wawi 2.0 0
Neu Bestandsabgleich JTL Wawi mit Amazon JTL-Wawi - Fehler und Bugs 1
Neu Kundensupport Projekt (Mail + eBay + Amazon + JTL + KI) Dienstleistung, Jobs und Ähnliches 0
JTL-Worker-Status-Widget zeigt nichts mehr an JTL-Wawi 2.0 7
Neu Aufträge mit JTL-Pos gezahlt im Tagesabschluss (Lexware Office) Allgemeine Fragen zu JTL-POS 0
Neu JTL Worker 2.0 erstellt keinen Komplettabgleich JTL-Wawi 2.0 40

Ähnliche Themen