MySQL - Daten beim Webhoster löschen

OP #6218961
Lesenswert?

Ich will über PHPMyAdmin in einer bei einem Webhoster liegenden 
Datenbank Daten löschen  - z.B. alles älter als Timestamp X

Ich kann nicht von extern auf die Datenbank zugreifen, nur über ein vom 
Provider zur Verfügung gestelltes PHPMyAdmin oder eben über dort 
gehostete eigene Programme

Eigentlich wäre es ganz einfach:
DELETE FROM `data` WHERE `timestamp` < 1546297200

Leider erhalte ich aber nach einigen Sekunden ein Timeout - der Hoster 
lässt wohl soclhe großen Datenmengen nicht zu

Wie kann man das umgehen?

Datenbank herunter laden, lokal bearbeiten, wieder hoch laden?

Datenbank ist ca. 1 GB groß

Viele Grüße
Heinz
OP #6219145
Lesenswert?

Ben B. schrieb:
> Normalerweise ist das Timeout nur eine Laufzeitüberschreitung des
> PHP-Scipts. Der MySQL-Server müsste die Operation trotzdem komplett
> ausführen,

Tut er leider nicht - #2006 - MySQL server has gone away
Ich sehe an den Datensätzen, das es auch nicht weniger geworden sind - 
hatte gehofft es werden wenigstens ein paar gelöscht, und ich muss halt 
das Ganze mehrfach ausführen

Hmmm schrieb:
> Mit einem Index auf timestamp sollte es schneller gehen.

Verstehe ich zugegeben nicht, was muss ich da machen?

Das Problem ist wohl das Webhoster - zumindest meiner - das wait_timeout 
auf 60 gesetzt haben

Kann ich da überhaupt was machen?
Mein nächster Versuch wäre jetzt, Adminer auf meinem Webspace zu 
installieren?
https://www.adminer.org/de/

Die Datenbank hat momentan ca. 12 Mio Einträge, mir würde es reichen ca. 
3 Mio am Anfang zu löschen

Kennt jemand z.B. den PHP-Befehl um die ersten 100.000 zu löschen? 
Vielleicht geht es ja dann schneller, wenn ich das dann einfach 30 mal 
ausführe?
Gast #6219192
Lesenswert?

Heinz R. schrieb:
> Hmmm schrieb:
>> Mit einem Index auf timestamp sollte es schneller gehen.
>
> Verstehe ich zugegeben nicht, was muss ich da machen?

Mit einem Index sagst Du quasi der Datenbank, dass sie Zugriffe auf 
bestimmte Spalten optimieren soll, damit bei einem WHERE nicht die 
gesamte Tabelle von vorne bis hinten gelesen werden muss.

Spontan dazu gefunden, ohne es inhaltlich geprüft zu haben:

https://www.php-einfach.de/mysql-tutorial/optimierung-von-mysql-verwendung-des-index/

Wenn Du Pech hast, dauert allerdings die Index-Erstellung bei der 
vorhandenen Datenbank auch wieder so lange, dass Du am Zeitlimit 
scheiterst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren