2012-10-01 2 views
1

Oracle Materialized View의 라이프 사이클을 찾고 있습니다. 예를 들어, 문이 뷰는 뷰 문에서 참조 테이블의 한을 내 데이터베이스에 커밋 또는이 때마다 업데이트됩니다 Oracle Materialized 뷰의 라이프 사이클

Create materialized view foo
Refresh On Commit
...

? 또한이 시점을 넘어서 오라클은 기존 캐시를 삭제하고 새로운 캐시로 대체합니다. 구체적으로 구체화 된 뷰의 "staleness"창은 무엇입니까? 의미는 구체화 된보기를 작성하는 데 걸리는 시간에 따라 다릅니다.

답변

2

것이다 modify the commit process of all transactions that issue DML on a base tableON COMMIT 절 :

가 ON 지정 빠른 새로 고침 데이터베이스가 구체화 된 뷰의 마스터 테이블에서 작동하는 트랜잭션을 커밋 할 때마다 발생하는 것을 나타 내기 위해서 COMMIT. 데이터베이스가 커밋 프로세스의 일부로 새로 고침 작업을 수행하기 때문에이 절을 사용하면 커밋을 완료하는 데 걸리는 시간이 늘어날 수 있습니다.

커밋은 구체화 된 뷰의 새로 고침 성공 여부에 따라 달라집니다 (즉, 종속 MV를 새로 고칠 수 없어 커밋이 실패 할 수 있음).

새로 고침은 커미트를 발행 한 트랜잭션과 동일한 트랜잭션에서 발생합니다. 즉, 커밋이 완료되면 모든 세션에서 변경 사항을 볼 수 있습니다 (따라서 데이터는 오래되지 않습니다).

  • 성능 비용이에 커밋 MVS를 사용 :

    당신이 알고 있어야 할 것들 중 일부

    보기 로그 (기본 테이블에 DML "트리거"추가) 작업을 증가 구체화 분명히 커밋은 DML에 더 많은 작업을 수행 할 것입니다. 추가 작업이 부담이되지 않도록 작업 부하를 벤치마킹하십시오.
  • 동시 커밋 된 MV에서 동시 트랜잭션은 동일한 MV 행을 업데이트 할 수 있으므로 추가 작업 위에 커밋하는 동안 약간의 경합이 발생할 수 있습니다.
  • 일부 도구는 커밋이 실패 할 것으로 예상하지 않기 때문에 일부 UI 문제 (일반적으로 오래된 클라이언트 - 서버 앱)가 발생할 수 있습니다.
+0

알아두면 좋을 것. 'On Commit'을 사용하지 않을 때 걱정할 사항이 있습니까? – Woot4Moo

+0

@ Woot4Moo 커밋 할 때 사용하는 몇 가지 사항을 추가했습니다. On-Commit을 사용하지 않을 때, 오라클은 사용자가 (수동으로 또는 계획된 작업을 통해) 요청할 때 MV를 새로 고칩니다. 이 MV는 기본 테이블이 수정 될 때 유효하지 않게됩니다. –