【发布时间】:2018-03-30 03:15:25
【问题描述】:
我有一个按年(char)、月(char)和其他 3 个维度组织的物化视图摘要,然后是许多度量。我的数据跨度从 2013 年到现在,并且不断增加。
由于基础事实表很大(500+M 行,每年增加 100+M),我正在考虑对表和 MV 进行分区,以便仅刷新 MV 中的最后 12 个月。
经过多次阅读后,我应该按范围(每月)对事实表进行分区,并按月对 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
...
;
【问题讨论】:
标签: oracle data-warehouse partitioning materialized-views