oracle(11g) 的物化视图是数据仓库中聚合表的好习惯吗?
我们有 DW 流程,每天替换 2 个月的数据。有时这意味着每个月的演出很少(约 10 万行)。最重要的是物化视图,在夜间数据传输周期后刷新。我的问题是创建聚合表而不是 MV 会更好吗?
oracle(11g) 的物化视图是数据仓库中聚合表的好习惯吗?
我们有 DW 流程,每天替换 2 个月的数据。有时这意味着每个月的演出很少(约 10 万行)。最重要的是物化视图,在夜间数据传输周期后刷新。我的问题是创建聚合表而不是 MV 会更好吗?
我认为聚合表可能有益的一种情况是聚合可以有效地与原子级数据负载相结合,最好用一个例子来说明。
假设您每天通过分区交换将大量数据加载到事实表中。使用分区更改跟踪的物化视图刷新将在分区交换期间或之后触发,它将扫描已修改的分区并将更改应用于 MV。
作为要与事实表分区交换的表的一部分,您还可以使用 CUBE/ROLLUP 计算各个级别的聚合,并使用多表插入加载您可以使用的表然后将交换分区为一个或多个聚合表。通过避免重新扫描原子级数据,这不仅可能在本质上更有效,而且您的聚合是在事实表分区交换之前计算的,因此如果出现任何问题,您可以暂停对事实表本身的修改。
稍后可能会出现其他想法......如果其他人有想法,我将作为社区 Wiki 打开答案。