我有大约 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、截断、调整大小等)。
谢谢