为了使用SQL Server 2014从多个数据源加载数据和大量数据。
我的 ETL 脚本在 T-SQL 中,执行需要花费大量时间,因为我的 TempDB 已满。
在您看来,这是以此为主导的最佳方式:
- 使用提交事务?
- 清理临时数据库?
- 等。
他们回答这个问题的唯一方法是用非常高的一般性回答。
您有以下几种选择:
- 只需为临时数据库分配更多空间即可。
- 优化 ETL 查询并调整索引。
选项 2 通常是更好的分配。 过度使用 TempDB 表示正在发生低效的排序或联接。 要解决此问题,您需要分析 ETL 代码的实际执行计划。查找以下内容:
- 查询计划中带有感叹号。 这通常表示联接或排序操作必须溢出到 TempDB,因为优化程序低估了所需的内存量。 您可能有需要更新的统计信息。
- 查找估计行数和实际行数的巨大差异。 这也可能指示参数探查问题已过期的统计信息。
- 查找排序操作。 通常可以通过向表中添加索引来删除这些索引。
- 寻找低效的访问方法。 这些通常可以通过添加覆盖索引来解决。例如,如果您只需要大表中的少量行,则进行表扫描。 请注意,表扫描通常是加载数据仓库时的最佳方法。
希望这是有帮助的。
马吕斯