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 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 1
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 5
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 25
Zugriff verweigert nach Umzug auf neuen Rechner, X-Rechnung kann nicht gespeichert werden JTL-Wawi 1.11 2
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 10
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
Neu HTTP 500 auf /Kontakt – Route scheint intern noch zu existieren, JTL-Weiterleitung greift nicht Betrieb / Pflege von JTL-Shop 0
Direktupdate von JTL Wawi 1.10.11.0 auf 2.0 möglich? JTL-Wawi 2.0 6
Neu Update Wawi 1.10.16.0 auf 1.11.7 -> JTL-POS Einrichtung / Updates von JTL-POS 5
Neu Seit Update auf JTL-WaWi 2.0.0.0 keine Abholung der Kundendaten bei MediaSaturn-Bestellungen JTL-Wawi - Fehler und Bugs 7
Neu Banner per OPC auf Artikelseite Allgemeine Fragen zu JTL-Shop 5
Neu Artikelmerkmale auf Pickliste ausgeben? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 6
Plötzliche Preissenkungen auf ebay und amazon JTL-Wawi 1.10 2
Kommissionierung: Aufteilung eines Auftrags auf mehrere Boxen JTL-Wawi 1.9 2

Ähnliche Themen