Baltazar80
Gut bekanntes Mitglied
Hallo,
heute haben wir eine E-Mail von All-Inkl. erhalten, dass unsere Datenbank durch zu lange Abfragenlaufzeiten (teil parallel) die Server überlastet werden, und dass die Leidtung der anderen Kunden beinflusst? Was können wir da machen, und wodurch wird das verursacht. Wir haben erst kürzlich von 4.05 auf JTL Shop 5.14 geupdatet.
Hier das Schreiben von All-Inkl:
heute haben wir eine E-Mail von All-Inkl. erhalten, dass unsere Datenbank durch zu lange Abfragenlaufzeiten (teil parallel) die Server überlastet werden, und dass die Leidtung der anderen Kunden beinflusst? Was können wir da machen, und wodurch wird das verursacht. Wir haben erst kürzlich von 4.05 auf JTL Shop 5.14 geupdatet.
Hier das Schreiben von All-Inkl:
wir mussten eine anhaltende Überlastung des Server, ausgelöst durch Ihre Datenbank ..... feststellen. Dabei laufen einige Abfragen teils über 60000 Sekunden und lasten dabei die CPU aus. Durch die lange Laufzeit werden die Abfragen teils mehrfach parallel ausgeführt.
Die Abfragen entsprechen alle dem selben Schema. Bitte optimieren Sie diese, reduzieren Sie die abzufragenden Daten oder verzichten Sie auf diese. Aktuell schränken Sie durch die abgeforderte Leistung die Accounts der anderen Kunden auf dem Server ein.
Es handelt sich um Abfragen nach folgendem Schema:
Bitte bestätigen Sie den Empfang dieser Mail und teilen Sie uns die getroffenen Maßnahmen mit.
Code:
SELECT MAX(ssMerkmal.fMax) AS fMax, MIN(ssMerkmal.fMin) AS fMin FROM (SELECT ROUND( LEAST( (tpreisdetail.fVKNetto * 1) * ((100 - GREATEST(IFNULL(tartikelkategorierabatt.fRabatt, 0), 0, 0, 0)) / 100), IFNULL(tsonderpreise.fNettoPreis, (tpreisdetail.fVKNetto * 1))) * ((100 + 19.00) / 100), 2) AS fMax, ROUND(LEAST((tpreisdetail.fVKNetto * 1) * ((100 - GREATEST(IFNULL(tartikelkategorierabatt.fRabatt, 0), 0, 0, 0)) / 100), IFNULL(tsonderpreise.fNettoPreis, (tpreisdetail.fVKNetto * 1))) * ((100 + 5.00) / 100), 2) AS fMin FROM tartikel #JOIN from JTL\Filter\States\BaseCategory::getSQLJoin JOIN tkategorieartikel ON tartikel.kArtikel = tkategorieartikel.kArtikel #join from JTL\Filter\Items\Characteristic::getSQLJoin JOIN tartikelmerkmal ON tartikel.kArtikel = tartikelmerkmal.kArtikel #join1 from JTL\Filter\Items\PriceRange::getSQLJoin JOIN (tpreis #subjoin for tpreis table JOIN tpreisdetail ON tpreisdetail.kPreis = tpreis.kPreis AND tpreisdetail.nAnzahlAb = 0) ON tartikel.kArtikel = tpreis.kA
rtikel AND tpreis.kKundengruppe = 1 #join2 from JTL\Filter\Items\PriceRange::getSQLJoin LEFT JOIN tartikelkategorierabatt ON tartikelkategorierabatt.kKundengruppe = 1 AND tartikelkategorierabatt.kArtikel = tartikel.kArtikel #join3 from JTL\Filter\Items\PriceRange::getSQLJoin LEFT JOIN tartikelsonderpreis ON tartikelsonderpreis.kArtikel = tartikel.kArtikel AND tartikelsonderpreis.cAktiv = 'Y' AND tartikelsonderpreis.dStart <= NOW() AND (tartikelsonderpreis.dEnde IS NULL OR tartikelsonderpreis.dEnde >= CURDATE()) #join4 from JTL\Filter\Items\PriceRange::getSQLJoin LEFT JOIN tsonderpreise ON tartikelsonderpreis.kArtikelSonderpreis = tsonderpreise.kArtikelSonderpreis AND tsonderpreise.kKundengruppe = 1 #product visiblity join from getBaseQuery LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel AND tartikelsichtbarkeit.kKundengruppe = 1 WHERE tkategorieartikel.kKategorie IN ( SELECT tchild.kKategorie FROM tkategorie AS tparent JOIN tkategorie AS tchild ON
tchild.lft BETWEEN tparent.lft AND tparent.rght WHERE tparent.kKategorie = 6) AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (32)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition GHS06: Totenkopf mit gekreuzten Knochen AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (65)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition H301 AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (184)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P312 AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (191)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P330 AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (224)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P301 + P310 AND tartikelmerkmal.kArtikel IN (
SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (229)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P302 + P352 AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (252)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P405 AND tartikelmerkmal.kArtikel IN (SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (267)) #condition from JTL\Filter\Items\Characteristic::getSQLCondition P501 AND tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 #default group by GROUP BY tartikel.kArtikel #limit sql ORDER BY tartikel.dErstellt DESC, tartikel.cName ) AS ssMerkmal