Neu Query Abfrage löst regelmäßig große Last auf dem Server aus

  • Temporäre Senkung der Mehrwertsteuer Hier findet ihr gesammelt alle Informationen, Videos und Fragen inkl. Antworten: https://forum.jtl-software.de/threads/mehrwertsteuer-senkung-vom-01-07-31-12-2020-offizieller-diskussionthread-video.129542/

erich84

Mitglied
22. Juni 2019
10
3
Hallo,

folgende Query Abfrage führt regelmäßig zu großer Last auf dem Server:
SELECT tseo.cSeo, ssMerkmal.kHersteller, ssMerkmal.cName, ssMerkmal.nSortNr, COUNT(*) AS nAnzahl FROM ( SELECT thersteller.kHersteller, thersteller.cName, thersteller.nSortNr FROM tartikel JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller JOIN ( SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (8,36,57,74,79,81,82,77) GROUP BY tartikelmerkmal.kArtikel HAVING count(*) = 8 ) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel 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.cLagerKleinerNull = 'Y' 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)) GROUP BY tartikel.kArtikel ) AS ssMerkmal LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1 GROUP BY ssMerkmal.kHersteller ORDER BY ssMerkmal.cName

Die Abfrage führt regelmäßig dazu, dass der Shop für den Nutzer sehr langsam ist.
Was macht die Abfrage?
Kann man einstellen, dass diese Abfrage vielleicht nur Nachts läuft?
Gibt es sonst eine Möglichkeit das Problem (Server langsam) zu beheben?

Freue mich auf Eure Rückmeldung.

Viele Grüße

Erich Rohn
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.542
710
Berlin
Hallo,

folgende Query Abfrage führt regelmäßig zu großer Last auf dem Server:
SELECT tseo.cSeo, ssMerkmal.kHersteller, ssMerkmal.cName, ssMerkmal.nSortNr, COUNT(*) AS nAnzahl FROM ( SELECT thersteller.kHersteller, thersteller.cName, thersteller.nSortNr FROM tartikel JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller JOIN ( SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (8,36,57,74,79,81,82,77) GROUP BY tartikelmerkmal.kArtikel HAVING count(*) = 8 ) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel 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.cLagerKleinerNull = 'Y' 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)) GROUP BY tartikel.kArtikel ) AS ssMerkmal LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1 GROUP BY ssMerkmal.kHersteller ORDER BY ssMerkmal.cName

Die Abfrage führt regelmäßig dazu, dass der Shop für den Nutzer sehr langsam ist.
Was macht die Abfrage?
Kann man einstellen, dass diese Abfrage vielleicht nur Nachts läuft?
Gibt es sonst eine Möglichkeit das Problem (Server langsam) zu beheben?

Freue mich auf Eure Rückmeldung.

Viele Grüße

Erich Rohn
so sieht das übersichtlicher aus:
Code:
SELECT
    tseo.cSeo,
    ssMerkmal.kHersteller,
    ssMerkmal.cName,
    ssMerkmal.nSortNr,
    COUNT(*) AS nAnzahl
FROM
    (
    SELECT
        thersteller.kHersteller,
        thersteller.cName,
        thersteller.nSortNr
    FROM
        tartikel
    JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller
    JOIN(
        SELECT kArtikel
        FROM
            tartikelmerkmal
        WHERE
            kMerkmalWert IN(8, 36, 57, 74, 79, 81, 82, 77)
        GROUP BY
            tartikelmerkmal.kArtikel
        HAVING
            COUNT(*) = 8
    ) AS tmerkmaljoin
ON
    tmerkmaljoin.kArtikel = tartikel.kArtikel
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.cLagerKleinerNull = 'Y' 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
        )
    )
GROUP BY
    tartikel.kArtikel
) AS ssMerkmal
LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1
GROUP BY
    ssMerkmal.kHersteller
ORDER BY
    ssMerkmal.cName
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.542
710
Berlin
um das noch aufzuschlüsseln, das ist die Funktion gibHerstellerFilterOptionen() die das auslöst, eigentlich landen die Ergebnisse im Cache das sollte also nur einmalig stressen und ist sicherlich davon abhängig wie viel Merkmale und Hersteller du hast.
 

erich84

Mitglied
22. Juni 2019
10
3
Hallo css-umsetzung,

vielen Dank für die schnelle Antwort. Wir haben ca. 80 Hersteller und 20 unterschiedliche Merkmale. Das Caching ist aktiviert. Wissen sie wie häufig das Query ausgeführt wird?

Viele Grüße

Erich Rohn
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.542
710
Berlin
Also es ist so das es diese Abfrage natürlich in 100 verschiedenen Varianten geben kann aber jede Variante wird innerhalb von 24h nur einmal ausgeführt, ist aber auch wieder davon abhängig wie groß der Cache sein darf (Serverabhängig).
Theoretisch würde ich auch sagen das diese Abfrage nur in Verbindung mit aufgerufenen Merkmalen oder der Suche auftreten würden aber dazu müsste ich selbst richtig nachschauen um diese Aussage zu validieren.

80 Hersteller sind schon nen bissel und da auch die Artikelsichtbarkeiten involviert sind kann es eventuell wirklich zu Engpässen kommen denn ich denke dann sind da schon sehr viele Artikel im Shop. Das müsste man wirklich mal direkt am offenem Herzen auseinander nehmen um zu sehen ob da eventuell ein Index fehlt oder von Vorteil wäre
 

erich84

Mitglied
22. Juni 2019
10
3
Vielen Dank für die Informationen.

Welche Zugänge oder Informationen bräuchte man um der Sache auf den Grund zu gehen. Reicht FTP?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.542
710
Berlin
Nein, der der da schaut, eventuell am besten sogar JTL (ist ja im Support inbegriffen) selbst , wird in jedem Fall einen backend, FTP und einen Zugang zu phpMyAdmin benötigen, da man die Queries dort am besten analysieren kann.