Vielen Dank für Dein nettes Lob.
« eric";p="2370 » wrote:
das Wichtigte...keine Timeouts!
Da stellt sich der MSD auch recht geschickt an.
Ich habe MSD gerade mal zu dem Thema interviewt und gefragt wie er das macht:
« MySQLDumper itself » wrote:
Ich starte beim ersten Seitenaufufruf des Backups nur so viele Tabellenzeilen-Abfragen, wie in der Konfiguration bei Geschwindigkeitskontrolle als unteres Limit angegeben wurde. Nun vergleiche ich die Zeit, die für diese Aktionen benötigt wurde, mit der maximal erlaubten Ausführungszeit (max_execution_time).
Wurde weniger Zeit gebraucht als die Maxzeit (-minus einem Sicherheitspuffer) oder das obere Geschwindigkeitslimit erlaubt, dann erhöhe ich die Geschwindigkeit (das ist die nette, rote Speed-Anzeige) um 10 Prozent.
Beim nächsten Seitenaufruf gilt dann der erhöhte Wert und das Spiel geht von vorne los.
So nähere ich mich sicher nach und nach an die Maxzeit an, ohne, dass es wirklich zum Timeout kommt.
Sicherheitshalber frage ich aber auch bei jeder Datenbankabfrage ab, ob die insgesamt vergangene Zeit in der Nähe der Maxzeit ist, breche dann gegebenenfalls die jetzige Abfrage ab und starte augenblicklich den Selbstaufruf (natürlich wird vorher noch schnell der Speedwert nach unten korrigiert).
Somit dürfte es praktisch keine Timeouts mehr geben.