0

为了使用 SQL Server 2014 从多个数据源和大量数据加载数据。

我的 ETL 脚本在 T-SQL 中,执行需要很长时间,因为我的 TempDB 已满。

在您看来,这是最好的方法:

  • 使用提交事务?
  • 清理 TempDB?
  • 等等
4

1 回答 1

0

他们回答这个问题的唯一方法是做出非常高水平的一般反应。

你有几个选择:

  1. 只需为 TempDB 分配更多空间。
  2. 优化您的 ETL 查询并调整您的索引。

选项 2 通常是更好的方法。过度使用 TempDB 表明正在发生低效的排序或连接。要解决此问题,您需要分析 ETL 代码的实际执行计划。查找以下内容:

  • 查询计划中的感叹号。这通常表明连接或排序操作必须溢出到 TempDB,因为优化器低估了所需的内存量。您可能有需要更新的统计信息。
  • 寻找估计行数和实际行数之间的巨大差异。这也可以指示参数嗅探问题的过时统计信息。
  • 寻找排序操作。通常可以通过向表中添加索引来删除这些。
  • 寻找低效的访问方法。这些通常可以通过添加覆盖索引来解决。例如,如果您只需要大表中的少量行,则进行表扫描。请注意,表扫描通常是加载数据仓库时的最佳方法。

希望这会有所帮助。

马吕斯

于 2017-04-03T22:44:14.350 回答