高效传输大量(8400 万行)数据

elt*_*123 12 sql-server

我有大约 8400 万行。其中所有这些都需要转移到同一服务器上的单独数据库中,然后我删除以从源数据库中删除大约 6000 万行。

8400 万行都在同一个表中。仅该表就占了整个数据库的 90%。

所以... 来源:8400 万行 -> 2400 万行目标:0 行 -> 8400 万行

源正在运行完全恢复模式,目标将运行简单。

我想知道最有效的方法是什么?

方案一:

1) 插入目标 SELECT * FROM 源

2) 截断来源

3) INSERT INTO source SELECT * FROM destination WHERE keep_condition = 1

方案B:

1) 将源数据库的备份恢复为目标数据库

2) 删除除目标数据库上需要的表之外的所有表

3) 截断来源

4) INSERT INTO source SELECT * FROM destination WHERE keep_condition = 1

计划C:

1) 插入目标 SELECT * FROM 源

2) DELETE source WHERE keep_condition = 0

或者是其他东西?

谢谢

Eri*_*ing 11

我想补充一点,无论您决定如何处理,您都需要批量处理这些交易。我最近对链接的文章很幸运,我很欣赏它利用索引的方式,而不是我看到的大多数批处理解决方案。

即使是最低限度的日志记录,这些都是大事务,您可能会花费大量时间处理异常日志增长的后果(VLF、截断、调整大小等)。

谢谢