Zmiana dużych tabel MySQL InnoDB
Dodanie nowej kolumny lub dodanie nowego indeksu może zająć godziny i dni dla dużych tabel innodb w MySQL z ponad 10 milionami wierszy. Jaki jest najlepszy sposób na zwiększenie wydajności dużych tabel innodb w tych dwóch przypadkach? Więcej pamięci, ulepszanie konfiguracji (na przykład zwiększaniesort_buffer_size lubinnodb_buffer_pool_size), czy jakaś sztuczka? Zamiast bezpośrednio modyfikować tabelę, można utworzyć nową, zmienić ją i skopiować stare dane, takie jak to, które jest przydatne dlaTabele ISAM iwiele zmian:
CREATE TABLE tablename_tmp LIKE tablename;
ALTER TABLE tablename_tmp ADD fieldname fieldtype;
INSERT INTO tablename_tmp SELECT * FROM tablename;
ALTER TABLE tablename RENAME tablename_old;
ALTER TABLE tablename_tmp RENAME tablename;
Czy jest to również zalecane dla tabel innodb, czy jest to po prostu to, co komenda ALTER TABLE wykonuje dalej?