【发布时间】:2010-12-08 19:17:32
【问题描述】:
我有几个大表(188m 和 144m 行)我需要从视图中填充,但每个视图都包含几亿行(将伪维度建模数据组合成一个平面形式)。每个表上的键是超过 50 个复合字节的列。如果数据在表中,我总是可以考虑使用 sp_rename 来创建另一个新表,但这不是一个真正的选择。
如果我执行单个 INSERT 操作,该过程会占用大量事务日志空间,通常会将其归档并引发 DBA 的一堆麻烦。 (是的,这可能是 DBA 应该处理/设计/架构师的工作)
我可以使用 SSIS 并通过批量提交将数据流式传输到目标表中(但这确实需要通过网络传输数据,因为我们不允许在服务器上运行 SSIS 包)。
除了使用某种键将流程分成多个 INSERT 操作以将行分配到不同的批次并执行循环之外,还有什么其他的吗?
【问题讨论】:
-
如果表分区是一个选项,您可以将插入除以分区值。可能会更快地将结果子集拼接在一起。
标签: sql sql-server tsql batch-processing