您好我们有一个数据库,在这个特定的表上每秒读取和写入3到4条记录,并在其上添加新列。该表有超过60000条记录。 我需要为此添加一个新列。 MySQL> ALTER TABLE tablename ADD columnname int(1);
完成这项工作最安全的方法是什么。是否可以在不停止MYSQL服务器的情况下添加此新列,并且在更新过程中不会丢失新记录,因为我认为这将花费很长时间?
答案 0 :(得分:7)
MySQL文档(http://dev.mysql.com/doc/refman/5.1/en/alter-table.html)提供以下信息:
"在大多数情况下,ALTER TABLE会生成原始表的临时副本。 MySQL等待修改表的其他操作,然后继续。它将更改合并到副本中,删除原始表,并重命名新表。在执行ALTER TABLE时,原始表可由其他会话读取。 在ALTER TABLE操作开始后对表开始的更新和写入将停止,直到新表准备就绪,然后自动重定向到新表而没有任何更新失败。临时表是在新表的数据库目录。"
根据文档,不应有任何数据丢失。但与往常一样,在对实时系统执行任何更改之前,请在测试计算机上查看相同的方案。