Tabela jest zablokowana podczas wykonywania kwerend DDL. Nie oznacza to, że serwer nie akceptuje zapytań dotyczących innych sesji podczas blokowania, ale są one ustawione w kolejce i prawdopodobnie upływają, zanim zrobi się ALTER TABLE. W zależności od czynników takich jak sprzęt, struktura tabeli i oczywiście liczba rzędów (które, jak pan powiedział, jest dość wysokie), zmiana zajmie trochę czasu.
W przypadku MySQL 5.5 (szybsze tworzenie indeksu, innodb), 8-procesorowy procesor, dyski mikroukładów, zmienianie tabeli rzędu 5 mil z kilkoma indeksami zajmuje w naszym przypadku około 15-20 minut.
Proponuję utworzyć kopię i zmienić kopię. Po zakończeniu będziesz musiał powtórzyć deltę danych. Facebook miał do czynienia z tym na sposób wyższy poziom, to sprawdzić
http://m.facebook.com/note.php?note_id=430801045932
Tho, nie mogę obiecać, to że wszystkie prace bezpiecznie na MyISAM silnika
EDIT:
Percona stworzyła zestaw narzędzi, który najwyraźniej działa na wszystkich silników składowania:
http://www.mysqlperformanceblog.com/2012/04/05/percona-toolkit-2-1-with-new-online-schema-change-tool/
W tym wydaniu przedstawiamy nową wersję PT-online-schematu zmian, narzędzie, które umożliwia Ci ALTER duże tabele bez blokowania lub przestojów. Jak wiesz, MySQL blokuje tabele dla większości operacji ALTER, ale pt-online- zmiana schematu powoduje ALTER bez blokowania. Aplikacje klienckie mogą kontynuować czytanie i pisanie tabeli bez żadnych przerw.
Klonowanie, test porównawczy, planowanie, wdrażanie. – soulseekah
Jakiego silnika bazy danych używasz? – Barmar
@Barmar Myślę, że masz na myśli MyISAM. DB to MySQL. – SimonW