Mysql
 sql >> Baza danych >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN zajmuje dużo czasu

Twoja ALTER TABLE Instrukcja oznacza, że ​​mysql będzie musiał przepisać każdy wiersz tabeli, w tym nową kolumnę. Ponieważ masz ponad 2 miliony wierszy, zdecydowanie spodziewam się, że zajmie to dużo czasu, podczas którego twój serwer będzie prawdopodobnie głównie związany z operacjami we/wy. Zwykle uważasz, że skuteczniejsze jest wykonanie następujących czynności:

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;

W ten sposób dodajesz kolumnę do pustej tabeli i zasadniczo zapisujesz dane w tej nowej tabeli, na które masz pewność, że nikt inny nie będzie patrzył bez blokowania tak dużej ilości zasobów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaznacz wszystkie rekordy, które nie spełniają określonych warunków w połączonej tabeli

  2. Mysql:konwersja daty z „dd/mm/rrrr” na „rrrrmmdd”

  3. MYSQL - policz liczbę wierszy w każdej tabeli

  4. JSON_SET() vs JSON_INSERT() vs JSON_REPLACE() w MySQL:jaka jest różnica?

  5. Korzystanie z relacyjnych baz danych MySQL w Arch Linux