ALTER TABLE ADD COLUMN benötigt eine lange Zeit
Ich habe nur versucht, fügen Sie eine Spalte namens "location", um eine Tabelle (main_table) in einer Datenbank. Der Befehl, den ich ausgeführt wurde
ALTER TABLE main_table ADD COLUMN location varchar (256);
Den main_table enthält > von 2.000.000 Zeilen. Es läuft für mehr als 2 Stunden und immer noch nicht abgeschlossen.
Habe ich versucht zu verwenden mytop
überwachen Sie die Aktivität dieser Datenbank, um sicherzustellen, dass die Abfrage nicht gesperrt durch andere Abfragen Prozess, aber es scheint nicht. Ist es eigentlich nehmen, dass lange Zeit? Tatsächlich habe ich gerade neu gestartet, die Maschine, bevor dieser Befehl ausgeführt wird. Jetzt diesen Befehl noch ausgeführt wird. Ich bin nicht sicher, was zu tun ist.
InformationsquelleAutor der Frage fanchyna | 2011-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
ALTER TABLE
Aussage impliziert mysql wird wieder schreibt jede einzelne Zeile der Tabelle einschließlich der neuen Spalte. Da haben Sie mehr als 2 Millionen Zeilen, ich würde auf jeden Fall erwarten, dass es dauert eine erhebliche Menge an Zeit, während der die server werden wahrscheinlich meist IO-bound. Sie würde in der Regel finden, es ist performant, Folgendes zu tun:Diese Weise fügen Sie die Spalte auf die leere Tabelle, und im Grunde schreiben die Daten in die neue Tabelle, die Sie sind sicher, dass niemand wird gesucht, ohne Verriegelung so viel Ressourcen.
InformationsquelleAutor der Antwort Romain
Ich denke eine passende Antwort für diesen ist die Verwendung einer Funktion wie pt-online-schema-change oder Ghost.
Haben wir getan migration von über 4 Milliarden Zeilen mit diesem, obwohl es kann bis zu 10 Tage, mit weniger als einer minute Stillstand.
Percona arbeitet in sehr ähnlicher Weise wie oben
InformationsquelleAutor der Antwort Pratik Bothra
Alter table dauert eine lange Zeit mit big data-wie in Ihrem Fall, so vermeiden Sie es in solchen Situationen, und verwenden Sie code wie diesen:
InformationsquelleAutor der Antwort ZORRO_BLANCO