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 Update Version 1.5 auf 1.11 - Download älterer Versionen als 1.8 Installation von JTL-Wawi 0
Neu Shop-Update auf 5.7.1: Sprachvariablen im Widerrufsformular werden nicht erkannt, obwohl vorhanden?! JTL-Shop - Fehler und Bugs 0
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 1
Neu Nach Update auf 1.11.10.0 Abgleich zu Ebay über 3 Stunden bei neuen Angeboten eBay-Anbindung - Fehler und Bugs 2
Neu Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 0
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 7
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 28
Zugriff verweigert nach Umzug auf neuen Rechner, X-Rechnung kann nicht gespeichert werden JTL-Wawi 1.11 4
Eigenes Feld aus Artikel auf Lagerpackliste ausgeben JTL-Wawi 1.11 1
Hat schon jemand auf JTL 2.0.2 installieren? JTL-Wawi 2.0 9
Neu Nach Update auf 1.11.9 - alle Shopify Shop nicht mehr connected Shopify-Connector 4
Neu DHL Umstellung auf 4.0 User helfen Usern - Fragen zu JTL-Wawi 2
Neu ❓JTL Wawi Update von 1.8 auf ??? User helfen Usern - Fragen zu JTL-Wawi 1
Update von 1.10.10.3 auf aktuellere Versionen JTL-Wawi 1.10 0
Neu seit Umstellung auf DHL 4.0 ist auf DHL Aufkleber grauer Schleier im Hintergrund JTL-ShippingLabels - Fehler und Bugs 0
Neu Automatische Umstellung auf Pro-Tarif ohne Zustimmung? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Positionen eines Auftrags auf mehrere Picklistenvorlagen aufteilen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Upgrade CFE auf Advanced Allgemeine Fragen zu JTL-Shop 7
Neu Probleme mit Import Datenbank vom Server auf lokal JTL-Wawi 2.0 User helfen Usern - Fragen zu JTL-Wawi 4
Neu JTL2DATEV SKR 04 auf SKR 03 umstelllen User helfen Usern - Fragen zu JTL-Wawi 0
Neu nicht lieferbare Artikel aus Bestellung wieder auf die Einkaufsliste setzen ?! User helfen Usern - Fragen zu JTL-Wawi 1
Neu Plattformkosten auf Auftragspositionsebene in die JTL WaWi schreiben Arbeitsabläufe in JTL-Wawi 4
Nach Update auf 2.0 auf einmal kostenpflichtig JTL-Wawi 2.0 2
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 500 Upgrade JTL-Shop4 auf JTL-Shop5 3
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 404 Upgrade JTL-Shop4 auf JTL-Shop5 11
Neu Wer hat schon auf 5.7 geupdatet? Installation / Updates von JTL-Shop 5
Neu JTL WMS & mehr – auf dem MultichannelDay.de Messen, Stammtische und interessante Events 0
Neu Update von 1.8.12.4 auf 1.11 User helfen Usern - Fragen zu JTL-Wawi 0
Neu Nach Umstellung DHL Versenden 4.0 wird Kleinpaket nun auf DHL Paket Labeldrucker ausgegeben statt auf Kleinpaketdrucker JTL-ShippingLabels - Fehler und Bugs 14
Update auf Shop 5.5.0 von 5.4.1 ist der Shop nicht mehr erreichbar Upgrade JTL-Shop4 auf JTL-Shop5 4
Nach Update auf 2.01 kein Worker mehr JTL-Wawi 2.0 13
Nach Update auf Wawi 2.0.X, API v1 Fehler JTL-Wawi 2.0 9
JTL hausinterner Herstellerslider auf Mobile Ansicht nicht sichtbar. Einrichtung JTL-Shop5 0
Neu Fehler Scan Barcodes GTIN13 auf einem Lotto-Kundenbeleg JTL-POS - Fehler und Bugs 4
Umstellung auf 2.0, Frage zur Auf-Abwärtskompatibilität JTL-Wawi 2.0 2
Update auf 2.0.1 Fehler bei eazybusiness JTL-Wawi 2.0 17
Neu Fehler beim Update der Datenbank von 1.11.7 auf 2.0.1 JTL-Wawi - Fehler und Bugs 7
Update auf 2.0.1.0 bricht ab bei 1.12.0.0. JTL-Wawi 2.0 6

Ähnliche Themen