0

스토어드 프로 시저의 업데이트에 대한 계산 비용은 쿼리 실행 또는 결과 집합을 기준으로 Oracle에서입니다. 보다 구체적으로, 오라클은 쿼리 결과를 뷰를 새로 고치는 데 필요한 시간에 상당히 기여하는 방식으로 저장합니까?오라클 구체화 뷰 계산 비용

물론 엄청나게 크거나 작은 결과 집합과 마찬가지로 실행 시간이 오래 걸리는 쿼리는 유비쿼터스 답을 불가능하게 만듭니다.

질문은보기가 실제로 결과 세트를 메모리 (디스크)에 저장하는 방법에 대한 것이므로 구체화 된보기를 얼마나 자주 다시 작성해야하는지 생각해 볼 수 있습니다.

+0

저장 프로 시저를 다시 작성한다는 것은 무엇을 의미합니까? –

+0

@beherenow 유감스럽게도, 나는'materialized view'를 의미했지만 뇌에 수술을 저장 한 것 같습니다. 나는 질문을 다시 고쳐 썼다, 고마워!.. 나는 아직도 '새로 고침'또는 '재건'이 정확한 단어인지 확실하지 않지만. –

답변

1

이 mviews

전체 새로 고침 MVIEW의 두 가지 유형이 있습니다 - ENTIER의 MVIEW마다 새로 고침을 다시 될 것입니다. 삭제 및 삽입과 유사합니다 (주의 사항 : atomic = F를 지정하거나 버전 < 9 인 경우 잘라내 기/삽입 추가).

빠른 새로 고침 mview - oracle은 증분 변경 사항을 저장하기위한 테이블을 생성합니다. 새로 고칠 때, 부가 테이블에 저장된 변경 사항은 mview에 적용됩니다.

빠른 새로 고침은 새로 고침이 빠르지 만 기본 테이블의 dml 작업 속도가 느려집니다.

새로 고침 전략을 고려할 때 기본 테이블에 적용되는 변경 사항의 양과 mview를 새로 고칠 빈도를 고려해야합니다.

+0

@haki, 하루에 한 번 구체화 된 뷰를 새로 고치면 전체 새로 고침을 수행하는 것이 더 도움이됩니까? –

2

기본적으로 구체화 된보기는이를 업데이트하는 알고리즘과 결합 된 테이블입니다.

01:37:23 [email protected]> create materialized view mv_dual as select dummy from dual; 

Materialized view created. 

Elapsed: 00:00:00.52 
01:37:56 [email protected]> select object_name, object_type from user_objects where object_name = 'MV_DUAL'; 

OBJECT_NAME  OBJECT_TYPE 
--------------- ------------------- 
MV_DUAL   TABLE 
MV_DUAL   MATERIALIZED VIEW 

Elapsed: 00:00:00.01 

미리 작성된 테이블에 대한 구체화 된보기를 작성할 수도 있습니다.

새로 고침에 대해 이야기하면 빠른 새로 고침과 완전 새로 고침이라는 두 가지 옵션이 있습니다.

빠른 새로 고침이 증분 업데이트를 수행하는 동안 완전 새로 고침은 MV 쿼리 만 재실행합니다.

http://docs.oracle.com/cd/E16338_01/server.112/e10706/repmview.htm#i29858