在mysql中如何插入包含在表中的大量数据的列,没有停机时间

时间:2016-06-28 07:35:41

标签: mysql

如果MySQL中的表包含100万条记录,那么如何在任何位置添加列而不会出现停机时间。

1 个答案:

答案 0 :(得分:2)

对于非常大的表,MySQL的ALTER TABLE性能会变得非常令人沮丧。 ALTER 语句创建一个新的临时表,即使不严格需要复制数据,也会将现有表中的记录复制到新表中,然后用新表替换旧表。 / p>

假设您有一个包含一百万条记录的表,如果您尝试在其中添加三列,那么它肯定会复制该表三次,这意味着应对300万条记录。

更快的添加列的方法是创建自己的新表,然后选择现有表中的所有行。您可以从现有表创建结构,然后根据需要修改结构,然后在数据中选择。确保以与定义字段相同的顺序选择信息到新表中。

 1. CREATE TABLE new_table LIKE table
 2. INSERT INTO new_table SELECT * FROM table
 3. RENAME TABLE table = old_table, table = new_table;

如果您有外键约束,则可以使用

处理这些外键
SET FOREIGN_KEY_CHECKS = 0;