0

我有一个 ETL 作业(提取、转换、加载,使用 Safe FME 2018 开发)并针对 MS SQL Server 2016 运行。此作业仅处理常规数据(无空间数据):数据是从几个 MS SQL Server 表中提取的,经过转换与 FME 并加载回数据库到其他几个表中。ETL 作业分为 5 个子作业:子作业 1 到 4 将其结果写入多个表中,第 5 个子作业收集所有写入的数据并将其写入另一个数据库。

该作业按顺序执行许多 SQL 语句,其中一些相当复杂且运行时间较长(5-10 分钟)。

如果我连续多次运行此过程,使用完全相同的数据集(大约 20,000 条记录要处理),结果会非常混乱:

  • 正如预期的那样,运行 1 和 2 持续约 8 分钟
  • 运行 3 永远不会结束:进程卡在第一个 SQL 中并永远挂起。
  • 如果我终止第三次运行并执行运行 4 和 5,一切都会再次正常,我们只需要 8 分钟。
  • 运行 6 再次挂起
  • 等等...

我不知道在哪里进行错误分析。在我看来,所有的 SQL 语句都应该可以正常工作。MS SQL Server 上是否有任何魔法,例如优化或缓存查询或任何东西,阻止或锁定我的查询?有什么提示吗?

问候,托拜厄斯

4

0 回答 0