我们将SQL Server PDW设备用于我们的数据仓库。我们仓库中的表之一是具有约2000万行的复制表。作为ETL流程的一部分,我们需要使该维度的旧记录过期;但是,我们看到更新少数记录(<100)需要1个小时以上才能完成。如果可以的话,这就是我想要改进的地方。
自然,我想到的一个选择就是将“维度”从“复制”更改为“分布式”。我的测试表明,这将解决ETL过程花费很长时间(从1.5个小时降低到30秒)的问题,但是针对此维度的分布式版本的所有联接都将受到影响,因为联接几乎从未基于同一分布柱。当我查看其中一些查询的执行计划时,通常会看到ShuffleMove或BroadcastMove操作。
因此,我对PDW专家的问题是:
为了提高在此Dimension 的复制版本中更新记录的性能,是否可以做其他事情?
再一次,移动到分布式表似乎不是最好的解决方案,因为它会影响其他人开发的数百个已编写的SQL查询和报告。