背景资料:
我有一个传统的ETL(在SQL Server上),大约需要6个小时才能完成。我希望优化ETL。以下是我已经采取的步骤:
从逻辑中删除了不必要的CURSOR。对于我无法删除的剩余部分,我使用了READ_ONLY,FAST_FORWARD,INSENSITIVE。
发生了一些数据排序,我将其删除。
使用编译器提示或加入提示调整长时间运行的SQL查询。
删除了从源中提取的不必要的列。
也对表格进行了分区。我使用分区切换确实提高了性能。
我是否还有其他方法可以帮助提高ETL的速度?此时,我们无法选择添加更强大的硬件资源或迁移到Hadoop。
任何帮助都将不胜感激。
答案 0 :(得分:0)
几个问题: 您的源SQL Server数据库? 您是否查看了目的地数据库? 这是一个维度数据仓库还是规范化数据存储?
如果您对源和目的地没有太多了解,我可能会推荐其他一些事项:
1)删除不需要的查找转换(如果有的话)。
2)如果你能负担得起,我会考虑在你的一些源表上创建索引。并不总是可行,但这有助于相信我。
3)删除不需要的UNION
如果可能,请分享有关您的ETL /数据库架构的更多信息,我相信这里的许多大脑将能够带来更多智慧。
干杯 尼西