년 (문자), 월 (문자) 및 기타 3 차원으로 정리 된 요약 구체화보기가 있고 그 다음에 많은 조치가 있습니다. 내 데이터는 2013 년부터 현재까지 계속 증가합니다.오라클 구체화 된 뷰 : 파티션 전략
사실 Fact 테이블이 거대한 (500 + M 행은 매년 100 + M으로 증가합니다.) 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
...
;
답변 해 주셔서 감사합니다. 솔루션을 통해 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' 또는 값 (예 : 'PARTITION FOR (TIMESTAMP '2017-07-01 00:00:00')' –