0
我有一个按年(char),月(char)和其他3个维度组织的摘要物化视图,后面跟着许多度量。我的数据从2013年到现在的时间和连续增量。由于潜在的事实表是巨大的(500 + M行每年增加100 + M),我正在考虑对表和MV进行分区,以便刷新MV中的最后12个月。Oracle物化视图:分区策略
经过多次阅读后,我应该按范围(每个月)对事实表进行分区,按月划分MV,按年划分子划分。
我知道分区策略对于性能至关重要,所以我问是否有人有更好的解决方案,或者我制定的解决方案是最优解决方案。
谢谢!的MV分区代码
例子:
CREATE MATERIALIZED VIEW my_mv
PARTITION BY LIST (month) SUBPARTITION BY LIST (year)
(PARTITION p01 VALUES ('01')
(SUBPARTITION p_0117 VALUES ('2017')
, SUBPARTITION p_0116 VALUES ('2016')
, SUBPARTITION p_0115 VALUES ('2015')
, SUBPARTITION p_0114 VALUES ('2014')
, SUBPARTITION p_0113 VALUES ('2013')
)
, PARTITION p02 VALUES ('02')
(SUBPARTITION p_0217 VALUES ('2017')
, SUBPARTITION p_0216 VALUES ('2016')
, SUBPARTITION p_0215 VALUES ('2015')
, SUBPARTITION p_0214 VALUES ('2014')
, SUBPARTITION p_0213 VALUES ('2013')
)
...
, PARTITION p12 VALUES ('12')
(SUBPARTITION p_1217 VALUES ('2017')
, SUBPARTITION p_1216 VALUES ('2016')
, SUBPARTITION p_1215 VALUES ('2015')
, SUBPARTITION p_1214 VALUES ('2014')
, SUBPARTITION p_1213 VALUES ('2013')
)
)
AS
SELECT
...
FROM
...
;
感谢您的回答!用你提出的解决方案是否可以刷新MV的最后12个月?因为我没有看到使用范围技术的任何分区名称。如果有可能你能提供一个代码草图来做到这一点?再次感谢你! –
当您在[DBMS_MVIEW.REFRESH()](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_mview.htm#i997194)处使用method =>'P''时,Oracle刷新只有自上次刷新后发生更改的分区 - 实际上应该是上个月的分区(取决于您的分区间隔)。一般来说,你可以通过名字来寻址分区,例如, “PARTITION P_201707”或值,例如'分区为(TIMESTAMP'2017-07-01 00:00:00')' –