Neu Index auf tbesucher.dLetzteAktivitaet?

Heisenberg

Aktives Mitglied
12. März 2022
2
0
Hallo zusammen,

mir ist in einem Shop mit recht vielen Besuchern aufgefallen, dass sich hin und wieder Queries aufstauen:
SQL:
DELETE FROM tbesucher WHERE dLetzteAktivitaet <= DATE_SUB(NOW(), INTERVAL 3 HOUR)

INSERT IGNORE INTO tbesucherarchiv
            (kBesucher, cIP, kKunde, kBestellung, cReferer, cEinstiegsseite, cBrowser,
              cAusstiegsseite, nBesuchsdauer, kBesucherBot, dZeit)
            SELECT kBesucher, cIP, kKunde, kBestellung, cReferer, cEinstiegsseite, cBrowser, cAusstiegsseite,
            (UNIX_TIMESTAMP(dLetzteAktivitaet) - UNIX_TIMESTAMP(dZeit)) AS nBesuchsdauer, kBesucherBot, dZeit
              FROM tbesucher
              WHERE dLetzteAktivitaet <= DATE_SUB(NOW(), INTERVAL 3 HOUR)
Die Statusse waren jeweils updating, waiting for handler commit oder executing. Auf meinen Datenbankservern ist allerings "sync_binlog=1" gesetzt was grundsätzlich immer darauf wartet, dass das binlog geschrieben wurde.

Das DELETE erzeugt einen exklusiven Lock auf die Tabelle tbesucher was dazu führt, das das INSERT ins tbesucherarchiv nicht ausgeführt werden kann.
Andersherum, wenn das INSERT direkt vor dem DELETE ausgeführt wird, kann das DELETE nicht ausgeführt werden weil es keinen exklusiven Lock anfordern kann und es muss auf das INSERT warten.
Da kein Index gewählt werden kann, wird zwangsläufig ein Full Table Scan durchgeführt. Bei 70 MB fällt sicherlich nicht viel Zeit an, aber es fällt Zeit an.
Kommen nun viele Queries quasi zur selben Zeit, multipliziert sich der Vorgang sehr schnell.

Mit einem Index wird nur noch die Row gelocked, was die Queries parallel ausführen lässt.


OHNE Index (anderer Shop)
SQL:
mysql> EXPLAIN DELETE FROM tbesucher WHERE dLetzteAktivitaet <= DATE_SUB(NOW(), INTERVAL 3 HOUR);
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | DELETE      | tbesucher | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 9815 |   100.00 | Using where |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+

MIT Index
SQL:
# INDEX
ALTER TABLE tbesucher ADD INDEX idx_letzte_aktivitaet (dLetzteAktivitaet);

mysql> EXPLAIN DELETE FROM tbesucher WHERE dLetzteAktivitaet <= DATE_SUB(NOW(), INTERVAL 3 HOUR);
+----+-------------+-----------+------------+-------+-----------------------+-----------------------+---------+-------+------+----------+-------------+
| id | select_type | table     | partitions | type  | possible_keys         | key                   | key_len | ref   | rows | filtered | Extra       |
+----+-------------+-----------+------------+-------+-----------------------+-----------------------+---------+-------+------+----------+-------------+
|  1 | DELETE      | tbesucher | NULL       | range | idx_letzte_aktivitaet | idx_letzte_aktivitaet | 6       | const |    1 |   100.00 | Using where |
+----+-------------+-----------+------------+-------+-----------------------+-----------------------+---------+-------+------+----------+-------------+

Beste Grüße
 

MKis84

Aktives Mitglied
21. September 2016
27
7
Hallo Heisenberg

Dieser fehlende Index hat unseren Shop bei massiven Besuchen von Bots auch schon in die Knie gezwungen. Seit wir den Index gesetzt haben läuft das wunderbar.

Gruss
Marco
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Dringend: USA DHL Versand Umstellung ab 24.07. auf HTSUS Zolltarifnummern JTL-ShippingLabels - Ideen, Lob und Kritik 6
Neu Update auf 5.7.2 - kein DB Update Installation / Updates von JTL-Shop 10
Neu Feld "Informationen" auf Smartphone immer ausklappen Allgemeine Fragen zu JTL-Shop 2
Neu Update von 1.8.12.4 auf 2.0.5 - Kostenfreie Version - Registrierung erforderlich? User helfen Usern - Fragen zu JTL-Wawi 1
JTL Update auf 1.9 , danach Import Kundenspezifrische Preise velerhaft JTL-Wawi 1.9 0
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
nach Update von 5.3 auf 5.7 neue Position im Warenkorb "Gebühr" die auch in den Auftrag übernommen werden Einrichtung JTL-Shop5 2
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 4
Neu Amazon: Artikel-Highlight / Produkttitel auf 75 Zeichen begrenzt Amazon-Anbindung - Fehler und Bugs 8
Neu Produktionsaufträge tauchen nicht in der Workbench auf JTL-Plan&Produce - Fehler und Bugs 2
Bei Update auf 2.05 kam folgende Meldung JTL-Wawi 2.0 2
Ameise - Importvorlage auf 80 Spalten begrenzt? JTL-Wawi 2.0 0
Login Wawi nicht möglich nach Update auf 1.11.11 JTL-Wawi 1.11 1
Neu Anpassung Kundendaten auf XRechnung User helfen Usern - Fragen zu JTL-Wawi 4
Neu Absenderadresse auf Versandlabel ändern User helfen Usern - Fragen zu JTL-Wawi 1
Ameise (1.11.11.0) Export auf Clients nicht möglich - Das Dezimaltrennzeichen kann nicht die leere Zeichenfolge sein JTL-Wawi 1.11 5
Neu Hinweis zum Auftrag wird seit Update auf die 1.11 nicht mehr angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Umstellung auf Jera Datev Schnittstelle - keine Kundennummer im Kundencenter Schnittstellen Import / Export 2
JTL APP - Fehlermeldung nach Update auf Wawi 1.11. JTL-Wawi App 6
JTL Wawi 1.11. - Fenstergröße - Artikel auf Einkaufsliste setzen JTL-Wawi 1.11 13
Nach Update auf 2.0.3 Keine Fehlermeldungen mehr sichtbar Otto.de - Anbindung (SCX) 1
DPD Cloud Labeldruck auf Zebra LP 2844-Z seit Update auf JTL-Wawi 1.11.x fehlerhaft JTL-Wawi 1.11 3
JTL nach Update auf 2.0.3 im Bereich „Kunden“ extrem langsam JTL-Wawi 2.0 1
Neu DotLiquide Variable Voraussichtliches Lieferdatum auf Rechnung User helfen Usern - Fragen zu JTL-Wawi 1
Neu Betrag auf der Rechnung nach Rechnungskorrektur User helfen Usern - Fragen zu JTL-Wawi 1
Fehler nach Update auf Version 1.11.11 und 2.0.4 JTL-Wawi 2.0 7
Lohnt sich das Update von 1.11.6 auf 2.0.4 aktuell? JTL-Wawi 2.0 2
Neu DHL Versenden 4.0 Zolltarifnummer auf 8 Stellen kürzen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Internetmarke 2.0 - Direktdruck auf Umschlag JTL-ShippingLabels - Ideen, Lob und Kritik 3
Update auf 1.11.11 schlägt fehl JTL-Wawi 1.11 3
Neu Update Version 1.5 auf 1.11 - Download älterer Versionen als 1.8 Installation von JTL-Wawi 2
Neu Shop-Update auf 5.7.1: Sprachvariablen im Widerrufsformular werden nicht erkannt, obwohl vorhanden?! JTL-Shop - Fehler und Bugs 3
Erfahrungswerte Update von 1.8.12.2 auf 1.11.10 JTL-Wawi 1.11 4
Neu Umzug von sehr alter JTL Wawi Version auf neuen PC User helfen Usern - Fragen zu JTL-Wawi 3
Neu Rechnungskorrektur/Storno wird auf falsches Buchungskonto gebucht JTL-Wawi - Fehler und Bugs 1
Neu Umstellung auf DHL Versenden 4.0 leeres Versand Label JTL-ShippingLabels - Ideen, Lob und Kritik 5
Neu Angebotsname auf Amazon Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Konfigurationskomponenten auf Bons in separaten Positionen ausgeben JTL-POS - Fehler und Bugs 4
Neu Nach Update auf 1.11.10.0 Abgleich zu Ebay über 3 Stunden bei neuen Angeboten eBay-Anbindung - Fehler und Bugs 2
Beantwortet [WAWI-85758] Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 1
Neu Suche Workflow: Erstbestellung Shop auf Rechnung -> Auftrag Zurückhalten JTL-Wawi - Ideen, Lob und Kritik 1
Dashboard lädt nicht und Umsatzanzeige rechnet falsch seit Update auf 1.11.8 JTL-Wawi 1.11 8
Neu PayPal Plugin wirft Fehler auf einmal wegen telefonnummer JTL-Shop - Fehler und Bugs 3
Update von 1.10.15 auf 1.11.10 JTL-Wawi 1.11 11
Neu Falsch erzeugte Ausgangszahlung bei Teilzahlungen und Retoure (Kauf auf Rechnung) Arbeitsabläufe in JTL-Wawi 0
Neu Nach Update auf JTL-Wawi 2.0.3 keine WMS-Lager mehr auswählbar – Versand komplett blockiert JTL-Wawi 2.0 3
Update auf 1.11 verlangt ein Update auf aktuelleren SQL Server JTL-Wawi 1.11 7
Betreff: Umstellung Shipping 3 auf Shipping 4 nicht möglich JTL-Wawi 2.0 0
Neu Migration DHL Versenden 3.0 auf DHL Versenden 4.0 Dienstleistung, Jobs und Ähnliches 31
Zugriff verweigert nach Umzug auf neuen Rechner, X-Rechnung kann nicht gespeichert werden JTL-Wawi 1.11 4

Ähnliche Themen