Redshift - DataWarehouse数据刷新

时间:2017-08-24 14:15:08

标签: database amazon-redshift data-modeling data-warehouse sql-data-warehouse

我的数据仓库是在Amazon Redshift上构建的。我目前面临的问题是,我的架构中有一个巨大的事实表(大约500M行),其中包含大约10个客户端的数据。我有定期(主要是每天)为此事实表生成数据并需要刷新的进程,这意味着 - 删除旧数据并插入新生成的数据。

问题是,这个批量删除插入操作在我的事实表中留下了需要VACUUM的漏洞,这是耗时的,因此无法立即完成。此事实表(由于删除的数据而导致巨大漏洞)显着影响快照时间,该快照时间消耗来自事实和维度表的数据并在下游表示区域中刷新它。如何在DWH环境中优化此类批量数据刷新?

我认为这应该是DWH中一个众所周知的问题,并提出一些建议的解决方法。任何人都可以指出推荐的解决方案吗?

P.S:一个解决方案可以是为每个客户端创建表,并在其上面有一个视图,它可以实现所有基础表的并集。在这种情况下,如果我打破每个客户端的事实表,它很小,可以在删除插入后快速抽真空,但寻找具有更好可维护性的解决方案。

1 个答案:

答案 0 :(得分:0)

您可能尝试使用不同类型的吸尘器,只有“VACUUM DELETE ONLY”,它会收回空间,但不会使用线路,不确定它是否适用于您的使用案例。

此处有更多信息:http://docs.aws.amazon.com/redshift/latest/dg/t_Reclaiming_storage_space202.html

或者当我在用太多列的吸尘表进行战斗时,我使用了深度复制方法。问题可能在于您需要大量空间用于中间步骤。

更多信息: http://docs.aws.amazon.com/redshift/latest/dg/performing-a-deep-copy.html