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 ❓JTL Wawi Update von 1.8 auf ??? User helfen Usern - Fragen zu JTL-Wawi 0
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 1
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 12
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 2
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
Beantwortet Update von 1.11.5 auf 2.0 bleibt hängen JTL-Wawi 2.0 2
Neu Umzug SQL Datenbank auf neuen Server User helfen Usern - Fragen zu JTL-Wawi 2
Update 1.9.8.0 auf 1.11.7.0 sofort Meldung "Not Responding" JTL-Wawi 1.11 2
Neu 1000te Zugriffe aus der ganzen welt auf applepay.php Allgemeine Fragen zu JTL-Shop 2
Neu Problem nach Update auf Shop 5.6.1 - Impressum JTL-Shop - Fehler und Bugs 2
Seit umzug auf neuen Server und vorherigem update auf 2.0, startet worker nicht... JTL-Wawi 2.0 4
Macht es noch Sinn, auf dem Marktplatz OTTO zu verkaufen? Otto.de - Anbindung (SCX) 7
Neu Pickliste wird auf Packtisch und in Wawi unter Picklisten nicht angezeigt. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Strukturierte Daten vom Typ "Produkt" werden nach Update auf JTL Shop 5.6.1 nur fehlerhaft erkannt JTL-Shop - Fehler und Bugs 3
Neu Artikelpreis auf Anfrage Fehlermeldung Allgemeine Fragen zu JTL-Shop 0
Aufträge auf die Pikliste legen bringt Fehler DataTreeListView JTL-Wawi 1.11 2
Shop 5.5.3 / Eingabefelder auf IOS zoomt immer :-( Einrichtung JTL-Shop5 6
Artikelbild auf Lieferschein anzeigen JTL-Wawi 1.11 5
Neu Kategoriestruktur auf JTL-Wawi in WooCommerce Shop darstellen WooCommerce-Connector 2
Artikelbezeichnung auf der Rechnung anpassen von "Artikelname" in "Kurzbeschreibung" JTL-Wawi 1.10 4
Update auf 1.11.7 JTL-Wawi 1.11 4

Ähnliche Themen