【问题标题】:INSERT ... SELECT on a huge MySQL tableINSERT ... SELECT 在一个巨大的 MySQL 表上
【发布时间】: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


【解决方案1】:

我使用了 CREATE TABLE AS,看看这是否也能帮助你:

CREATE TABLE ... SELECT Syntax

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多