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