规范化数据以插入SQL时,脚本任务较慢

时间:2017-09-22 06:30:20

标签: ssis

我们已经有大约5000万个JSON序列化字符串,它们大致按照以下过程插入到SQL中:

  • 1)阅读尚未处理的源表中的所有条目
  • 2)将每个反序列化为C#对象
  • 3)根据SQL验证该行是否由设备ID和时间戳唯一 - 如果不是唯一的则丢弃(每2000行约1个重复)。源数据或生产表中可能存在重复项,我需要对两者进行验证。
  • 4)检查子对象是否存在,如果不存在,则插入并返回插入的行ID,否则只返回子对象的行ID。
  • 5)对大约10个多级嵌套子类重复步骤4,然后在子类中链接父类的主键。
  • 6)更新原始行以设置"已插入"列为真。

整个批次都是在一个SSIS脚本任务中完成的,并且已经运行了很长时间。

对于上面的步骤4和5,每个源行实例化一个新的SqlCommand和.ExecuteScalar()以检索插入的行ID,以便在该对象的后续插入/更新中使用。

一切都行得很好但是我们需要将所有源数据重新导入到一些新数据库中,速度非常慢,每秒只有几百行。很明显,大量的单独读取,插入和更新都很慢,也是ADO的开销。

我不知道如何提高速度,因为许多功能需要阻止来保证唯一性。

如果我使用快速加载执行SSIS数据流任务,它将无法保证转换期间的唯一性。

在验证唯一性然后运行整体插入过程之后,将500个源行一次分成10个线程是否应该谨慎?

是否有更好的概念方法可以达到相同的效果?

0 个答案:

没有答案