6

我们需要对具有 4+ 十亿条记录的表进行初始数据复制,以从源 MySQL(5.5)定位到 SQL Server(2014)。有问题的表非常宽,有 55 列,但它们都不是 LOB。我正在寻找以最有效的方式复制这些数据的选项。

我们已经尝试通过 Attunity Replicate 加载(这对于不是那么大的表来说效果很好),但是如果使用 Attunity Replicate 的初始数据复制失败,那么它会从头开始......失去复制数据所花费的任何时间。通过打补丁以及该表可能需要 3 个月以上才能加载 Attunity 并不是解决方案。

我们还尝试使用链接服务器进行较小的批量加载。这是有效的,但似乎根本没有效率。

复制数据后,我们将使用 Attunity Replicate 来处理 CDC。

4

2 回答 2

1

对于这样的事情,我认为 SSIS 将是最简单的。它专为高达 1TB 的大型插入而设计。事实上,我会推荐这篇 MSDN 文章我们在 30 分钟内加载了 1TB,你也可以

做一些简单的事情,比如删除索引和执行其他优化,比如分区,会让你的加载速度更快。虽然 30 分钟不是一个可行的拍摄时间,但让 SSIS 包在工作时间之外运行将是一项非常简单的任务。

我的业务没有你做的规模负载,但我们确实每晚刷新超过 100M 的数据库,这不会超过 45 分钟,即使它优化得很差。

于 2019-05-24T18:18:52.673 回答
0

加载大量数据的最有效方法之一是按块读取它们。

我已经为 SQLite、Oracle、Db2 和 MySQL 回答了许多类似的问题。您可以参考其中之一以获取有关如何使用 SSIS 执行此操作的更多信息:

另一方面,还有许多其他建议,例如在目标表中删除索引并在插入后重新创建它们,在源表上创建所需的索引,使用快速加载选项插入数据......

于 2019-05-27T00:49:51.390 回答