-1

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

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

我相信这应该是 DWH 中一个众所周知的问题,有一些推荐的方法来解决。谁能指出推荐的解决方案?

PS:一种解决方案可以是为每个客户端创建表,并在其之上有一个视图,该视图将所有基础表联合起来。在这种情况下,如果我打破每个客户端的事实表,它会非常小,并且可以在删除插入后快速清除,但要寻找具有更好可维护性的解决方案。

4

1 回答 1

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

于 2017-08-24T16:49:14.547 回答