일부 연구 결과에 이 구체화 된보기에서 FAST FRESH
을 사용할 수 없습니까?이 경우 Materialized View 또는 Normal View를 사용 하시겠습니까?
oracle document 부분에 Complex Materialized View
은 빨리 새로 고칠 수 없다고 나와 있습니다.
In some cases, an aggregate function, although it is possible to have an aggregate
function in the defining query and still have a simple materialized view.
For example, the following statement creates a complex materialized view:
CREATE MATERIALIZED VIEW hr.average_sal AS
SELECT AVG(salary) "Average" FROM [email protected];
는보기 내가 여러 결과 조인에 대한
SUM()
집계를 포함 만드는 오전 구체화 (6 여섯 일부
8 thousand
행을 반환해야 조인). 보기가 20 초마다 새로 고쳐 져야합니다. 여기 스크립트 내가 위의 제약 조건으로
CREATE MATERIALIZED VIEW V_MVIEW$BASEVIEW
BUILD IMMEDIATE
REFRESH FAST START WITH (sysdate) NEXT (sysdate+1*20/(60*60*24)) WITH PRIMARY KEY
AS
select
cb.id as cb_id,
vb.id as vb_id,
sb.id as sb_id,
v.id as v_id, v.name as v_name,
t.t1 as t1, t.t2 as t2, t.t3 as t3,
c.id,
SUM(t.amount) as t_amount
from t
join cb on t.cb_id = cb.id
join vb on cb.vb_id = vb.id
join sb on sb.id = vb.sb_id
join v on v.id = sb.v_id
join c on c.id=cb.c_id
GROUP BY
cb.id,
vb.id,
sb.id,
v.id, v.name,
t.t1, t.t2, t.t3,
c.id
;
사용하지 않을조차 도움이 아직도 확신이 정상 전망보다 더 좋을 수 없다 매 20 초 동안 전체보기를 새로 고칠 수 있기 때문에, 더 이상 볼 구체화입니까? 상황을 어떻게 최적화 할 수 있습니까?
20 초마다 새로 고침? 이 스크립트의 실행 시간이 10 초 이상이면 서버 처리 비용이 반으로 줄어 듭니다. 10 초 미만인 경우 구체화 된보기가 갈 길이 아닙니다. 데이터가 매분 또는 2 분이 아닌 매 20 초마다 새로 고쳐지면 비즈니스 이익을 얻으려면 어떤 이점이 있습니까? – Twelfth
@Twelfth 감사합니다. 쿼리는 모든 결과를 반환하는 데 약 1 초가 걸리지 만 가장 최근의 결과를 얻으려면 20 초마다 반복해야합니다. 우리가보기를 사용하는 것을 선호하는 이유는 읽기 전용 데이터에 대한 트랜잭션 문제를 피하기 위해 I/O를 최소화하는 것입니다. 또한 다른 뷰가이 기본 뷰에 참여할 수 있지만 결과를 반환하는 데 몇 초 이상 걸리지는 않지만 10-30 초마다 새로 고침해야합니다. – Dreamer
이 구체화 된 뷰가 호출되는 횟수는 몇 번입니까? 1 분에 50 번 정도 익숙해지면 말이되는 것 같아요. 그리고 두 번째 질문으로, 귀하의 색인이 좋고 여기에 완전히 사용되고 있습니까? – Twelfth