Frage

Einmal täglich brauche ich eine MySQL-Tabelle mit einer neuen Datei aus dem Netz heruntergeladen aktualisieren ftp und dann mysqlimport. Allerdings möchte ich meine Website während der mysqlimport Betrieb läuft reibungslos zu halten, was einige Zeit dauert (es ist eine große Tabelle). Was wäre ein guter Weg sein, um sicherzustellen, dass die Nutzer nicht warten, für den Import zu beenden? Ich denke an eine temporäre Tabelle der Import und der Umbenennung es dann. Ist das ein guter Plan?

War es hilfreich?

Lösung

Eine wenig bekannte Tatsache ist, dass Sie mehr als eine Umbenennungs Anweisung in mysql verketten kann, und es werden alle Namen durchführen ändert atomar.

create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;

Die Umbenennungs Tabelle werden die Leser sperren (in der Tat wird es jede Auflösung des Namens blockieren), sollte aber ein sehr schneller Vorgang sein.

Andere Tipps

Wenn es ein Fall einer Zwischenaktualisierung ist, könnten Sie drosseln einfach das Einfügen neuer Daten über cron / Scheduling.

Last XYZ zeichnet jede Minute, ob die vorherige Aktualisierung abgeschlossen ist, machen einen lockfile, verzögerte Einsatz, spülen und wiederholen.

Wenn Sie über es wirklich klug zu erhalten, müssen die Update-Skript die Serverbelastung zur Laufzeit überprüfen und die Zahl der Importe entsprechend anpassen.

Dieser wird neue Daten verursacht in Chargen erscheinen, aber lassen Sie die Website weiterlaufen, während es aktualisiert werden wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top