【发布时间】:2016-10-06 13:11:11
【问题描述】:
我已经隔离了 MySQL 5.5,里面有一个巨大的表(3.5Tb 的数据,是的,它只有 1 个表)。
目标是将这个表的一半复制到同一服务器上的另一个中。如何更好更快地做到这一点? :
1) 只需 "INSERT INTO new_table SELECT * FROM old_table WHERE ..." 。 在这种情况下 MySQL 的行为是什么?我希望与 MySQL 的连接会因超时而中断,但是查询本身应该运行直到所有数据都被复制。 或者 MySQL 会因为这样的查询而崩溃?
2) 使用相同的“INSERT ... SELECT”,但按块选择(例如按 10000 行)。我猜这肯定更安全,但速度要慢得多。
最好的方法是什么?提前谢谢!
【问题讨论】:
-
你的意思是要在同一个数据库中存储两张表吗?
-
@RohitGaikwad 是的,我正在同一个数据库中复制表。这个想法是缩小表格并最终得到更小的表格。
-
你对主键有什么想法吗?
-
@RohitGaikwad 是的。在插入之前,我将删除新表上的所有索引。然后在最后添加它们。我的问题是关于查询本身 - MySQL 和 Innodb 是否能够同时处理如此庞大的查询?
-
规范化你的数据。
标签: mysql select insert bigdata