Eu criei esta tabela USERS com `10 milhões de registros
mysql> desc users;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id | int | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| gender | varchar(10) | NO | | NULL | |
+--------+--------------+------+-----+---------+-------+
Agora tenho 2 sessões de terminal, session_1 e session_2. Na session_1, executei este comando
mysql> alter table users add primary key(id);
Enquanto este comando alter na sessão_1 ainda estava em andamento, na sessão 2, eu mato o cliente mysql usando
kill -9 <mysql_session_id>
Quando reinicio o cliente mysql, emito desc USERS
mais uma vez, não vejo nenhuma chave primária na coluna id, mas depois de um minuto ou mais, vejo que a chave primária está lá na
id
coluna.
mysql> desc users;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| gender | varchar(10) | NO | | NULL | |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
Eu também tentei comset autocommit=0