2

嗨,我们有一个数据库,其中每秒在要添加新列的特定表上读取和写入 3 到 4 条记录。该表有超过 60000 条记录。我需要为此添加一个新列。MySQL>ALTER TABLE 表名添加列名 int(1);

完成这项工作最安全的方法是什么。是否可以在不停止 MYSQL 服务器的情况下添加这个新列,并且在更新过程中不会丢失新记录,因为我认为这需要很长时间?

4

1 回答 1

9

MySQL 文档 (http://dev.mysql.com/doc/refman/5.1/en/alter-table.html) 提供了以下信息:

“在大多数情况下,ALTER TABLE 会制作原始表的临时副本。MySQL 等待正在修改表的其他操作,然后继续。它将更改合并到副本中,删除原始表,并重命名新表。而ALTER TABLE 正在执行,原始表可以被其他会话读取。在 ALTER TABLE 操作开始之后开始的对表的更新和写入会停止,直到新表准备好,然后自动重定向到新表,没有任何失败的更新。临时表是在新表的数据库目录中创建的。”

根据文档,不应该有任何数据丢失。但与往常一样,在对实时系统进行任何更改之前,请在测试机器上检查相同的场景。

于 2012-04-15T06:46:46.003 回答