Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN dauert lange

Ihre ALTER TABLE -Anweisung impliziert, dass MySQL jede einzelne Zeile der Tabelle einschließlich der neuen Spalte neu schreiben muss. Da Sie mehr als 2 Millionen Zeilen haben, würde ich definitiv erwarten, dass es eine beträchtliche Zeit dauert, während der Ihr Server wahrscheinlich hauptsächlich IO-gebunden ist. Sie werden normalerweise feststellen, dass Folgendes leistungsstärker ist:

CREATE TABLE main_table_new LIKE main_table;
ALTER TABLE main_table_new ADD COLUMN location VARCHAR(256);
INSERT INTO main_table_new SELECT *, NULL FROM main_table;
RENAME TABLE main_table TO main_table_old, main_table_new TO main_table;
DROP TABLE main_table_old;

Auf diese Weise fügen Sie die Spalte in der leeren Tabelle hinzu und schreiben im Grunde die Daten in diese neue Tabelle, von denen Sie sicher sind, dass sie niemand sonst sehen wird, ohne so viele Ressourcen zu sperren.