以包含大量数据的 tempDB 为主导的最佳选择



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

我的 ETL 脚本在 T-SQL 中,执行需要花费大量时间,因为我的 TempDB 已满。

在您看来,这是以此为主导的最佳方式:

  • 使用提交事务?
  • 清理临时数据库?
  • 等。

他们回答这个问题的唯一方法是用非常高的一般性回答。

您有以下几种选择:

  1. 只需为临时数据库分配更多空间即可。
  2. 优化 ETL 查询并调整索引。

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

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

希望这是有帮助的。

马吕斯

最新更新