-1

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

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

我相信这应该是DWH中一个众所周知的问题,并带有一些推荐的解决方法。任何人都可以请指出推荐的解决方案吗?

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

+0

太宽的问题,这取决于数据的性质和多少你到底刷新(整个表或它的一部分) – AlexYes

+0

@AlexYes所以考虑我有数据为10表中的客户。有些工作为不同的时间表产生这些客户的数据(有些每天运行一次,有些则每周运行一次)。当它们生成数据时,我在这个表上删除插入。根据客户端的不同,我一次性替换的数据可能会在表格大小的10%到30%之间变化。不确定数据的性质是什么意思? –

+0

根据数据的性质我的意思是:如果你的实体是不可变的(例如你计算N天的综合浏览量),那么当你在第二天计算N + 1时,生成的第N天的聚合将是相同的你在第N + 10天计算它,你可以停止刷新整个表格并且只能追加。如果您的实体并非完全不可变,但在一段时间后稳定下来(例如,销售线索队列转换可能发生在领先的30天内),您可以使用尾随窗口处理数据,即仅重新处理最后X天每次 – AlexYes

回答

0

您可能会尝试使用不同类型的真空吸尘器,会出现“真空删除”,它将回收空间,但不会采用线条,不确定它是否适用于您的用例。

此处了解详情: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