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
7
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 JTL-Shop 5.5 – „Rechnung nicht beilegen“ per Workflow anhand der Auftragsposition erkennen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Welche JTL-Shop Plugins oder Funktionen fehlen euch noch? – menuBuilder aktuell in Entwicklung Plugins für JTL-Shop 6
Neu Neuer JTL-Shop lässt sich nicht öffnen Installation / Updates von JTL-Shop 2
Neu 💚 Plugin: DZM Bonus Plus - das Treueprogramm für deinen JTL-Shop Plugins für JTL-Shop 8
Neu Stripe plugin mit JTL SHOP Error 500 Plugins für JTL-Shop 2
Neu JTL-Shop 5.7.2: Zahlungsbetrag weicht vom Auftragswert ab JTL-Shop - Fehler und Bugs 4
Neu JTL-Shop 5.7.2: Unterschiedliche Standardsprachen in tsprache – widersprüchliche Canonical- und Hreflang-Ausgabe der Startseite Allgemeine Fragen zu JTL-Shop 4
Neu Versandetikett bei Aufträgen aus dem JTL Shop Arbeitsabläufe in JTL-Wawi 0
Neu JTL Shop 5.7.2 NOVA - Akkordeon Überschriften herabstufen auf H3 Templates für JTL-Shop 3
Neu 🚨 Sicherheitswarnung für JTL-Shop-Betreiber: Manipulation des Checkout-Prozesses durch externes JavaScript (Magecart- / Payment-Skimmer) Betrieb / Pflege von JTL-Shop 10
Neu JTL-Shop Konfigurator - die Ausgewählten Konfigurator gruppen werden im Artikel nicht vollständig angezeigt User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Shop 5 Backup Professional Plugin Plugins für JTL-Shop 0
Neu Plugin trotz Hinweis Kompatibel mit JTL-Shop bis 5.6.* auch unter 5.7.2 nutzen Plugins für JTL-Shop 2
Neu Aktuelle JTL Shop Sicherheitslücke - automatischer Patch im JTL Hosting ? Allgemeine Fragen zu JTL-Shop 15
Neu Suche 10–15 JTL-Shops für kostenlose JTL-Shop-Analyse (verschiedene Branchen) Dienstleistung, Jobs und Ähnliches 0
Neu JTL-Shop 5.7.2 Picture-Tag in mobilen Ansicht lädt beide Bilder JTL-Shop - Fehler und Bugs 0
Seit dem Update meines JTL-Shops auf Version 5.7.1 funktioniert die Verbindung zwischen JTL-Wawi 2.0.4.0 und dem Shop nicht mehr. JTL-Wawi 2.0 6
Neu Shop 5.7.2 - JTL PayPal Checkout legt alles lahm JTL-Shop - Fehler und Bugs 4
Neu JTL Shop Plugin - BD Automatisierter Widerruf (Von Händler für Händler - Schluss mit Mail-Chaos & Spam-Sorgen!) Plugins für JTL-Shop 0
Neu Welche JTL Shop Plugins oder kleinen Hilfstools würden euch im Alltag wirklich helfen? Plugins für JTL-Shop 0
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Widerrufsbutton für JTL-Shop 4 Allgemeine Fragen zu JTL-Shop 17
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 1
Neu JTL-Shop - Wechsel von Test zum Livebetrieb - was beachten ? Installation / Updates von JTL-Shop 2
Neu Meta Shop seit September 2025: JTL-Lösung für neue Checkout-URL gesucht Allgemeine Fragen zu JTL-Shop 0
Rabatt Coupons in Verbindung mit Staffelpreisen - JTL 1.11.9, JTL Shop JTL-Wawi 1.11 0
Fehler beim Abgleich mit dem JTL-Shop JTL-Wawi 2.0 12
Neu OnFinds: KI-Suche für JTL-Shop mit fairer Abrechnung nach Artikelanzahl. 30 Tage kostenlos testen Plugins für JTL-Shop 11
Neu Freelancer für JTL-Wawi, Shop & Prozessautomatisierung Dienstleistung, Jobs und Ähnliches 2
Neu JTL Shop 5.7.1 mit Fehlern - versandarten zahlungsarten nicht änderbar, leere weiße Seite JTL-Shop - Fehler und Bugs 5
Neu Massiver jtl-shop-cron aufruf JTL-Shop - Fehler und Bugs 7
Neu Neues Plugin: Erweiterter Widerrufsbutton für JTL-Shop Plugins für JTL-Shop 9
Neu [Suche 5 Beta-Tester] KI generiert JTL Shop 5 Templates per Beschreibung – kostenlos testen Templates für JTL-Shop 7
Neu JTL-POS 2.0.0.3 - Barcodeschema lässt sich nicht speichern / alte sind weg JTL-POS - Fehler und Bugs 1
Neu JTL POS Crasht bei Druckerauswahl JTL-POS - Fehler und Bugs 0
JTL API 2.0 Verbinden - HILFE GESUCHT JTL-Wawi 2.0 4
Neu JTL-POS 2.0.0.2 Absturz nach Tagesabschluss JTL-POS - Fehler und Bugs 5
Neu JTL POS App Speicherverbrauch hoch, obwohl Datensicherung klein JTL-POS - Fehler und Bugs 7
Neu Seit heute früh kein Start von JTL-Wawi möglich - Datenbank nicht erreichbar User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wie verarbeitet ihr B2B-Bestellungen aus E-Mail oder PDF in JTL-Wawi? Arbeitsabläufe in JTL-Wawi 16
Neu Fehler beim öffnen von JTL Hub JTL-ShippingLabels - Fehler und Bugs 2
Neu JTL-Wawi 2.0.6: eBay-Rahmenbedingungen bei bestehenden Angeboten/Vorlagen nicht mehr änderbar eBay-Anbindung - Fehler und Bugs 11
Neu Shipping 2.0 ist ein Grund für kleine Shops JTL zu verlassen bzw. gar nicht erst mit JTL anzufangen JTL-ShippingLabels - Ideen, Lob und Kritik 24
Neu guide.jtl-software.com seit mehreren Stunden nicht erreichbar JTL-Wawi - Fehler und Bugs 1
Neu Shopify-Connector auf neues JTL-Kundenkonto umstellen – App bleibt altem Konto zugeordnet Shopify-Connector 4
Neu JTL-Ameise - Neue / aktualisierte Lieferadresse als Standard setzen User helfen Usern - Fragen zu JTL-Wawi 3
Neu JTL-Ameise - Neue / aktualisierte Lieferadresse als Standard setzen User helfen Usern 0
Neu Klarna (1.2.14) und JTL (5.7.2) nicht kompatibel Technische Fragen zu Plugins und Templates 0
Neu Amazon VCS-Lite – Fehlende Rechnungen nachträglich hochladen (JTL-Wawi 1.11.11)? Amazon-Anbindung - Fehler und Bugs 4
Neu 🔥 𝐍𝐮𝐫 𝟓× verfügbar 𝟓𝟎% 𝐑𝐚𝐛𝐚𝐭𝐭 auf dein Besucherticket für die kommende JTL-Connect am 02.10.2026 in Köln Dienstleistung, Jobs und Ähnliches 0

Ähnliche Themen