Mysql
 sql >> Database >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN richiede molto tempo

Il tuo ALTER TABLE istruzione implica che mysql dovrà riscrivere ogni singola riga della tabella inclusa la nuova colonna. Dato che hai più di 2 milioni di righe, mi aspetterei sicuramente che richieda una notevole quantità di tempo, durante il quale il tuo server sarà probabilmente principalmente legato all'IO. Di solito trovi che sia più performante fare quanto segue:

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;

In questo modo aggiungi la colonna sulla tabella vuota e in pratica scrivi i dati in quella nuova tabella che sei sicuro che nessun altro guarderà senza bloccare così tante risorse.