by 허접탱이 Mview Materialized View DB LINK [2017.12.20 15:56:54]
안녕하세요.
MView에 대해 궁금한게 있어서 이렇게 글을 작성하게되었습니다.
지금 현재 특정 화면에 접속을 하게 되면 DB_LINK를 통해 데이터를 조회 하여 화면에 Display 해주는 화면이 있습니다. 그런데 조회 해오는 코드값이 10개 이상이 되다보니 매번 화면에 접속할때 마다 DB_LINK를 통해 쿼리를 10회 이상 실행하는게 비효율적이고 에러도 간헐적으로 발생을 하는거 같아 자료를 찾다보니 MView를 사용하는게 좀 더 효율적이라는 얘기를 들어서 한 번 사용을 해볼까 합니다.
1. MView를 생성할 때 Refresh 옵션중 ON COMMIT를 사용하게 되면 원본 테이블의 데이터가 추가/변경/삭제 될 때마다 Refresh 되는게 맞는건가요? 이 옵션을 사용하게 되면 원본테이블이 존재하는 서버에 LOG 테이블을 생성 해줘야 하나요?
2.보통 MView 생성 예제를 보면 ON DEMAND 옵션을 많이 사용하는거 같던데, 해당 옵션이 ON COMMIT보다 어떤점이 더 좋은건가요?
3. MView를 생성할 때, 원본 테이블이 존재하는 서버에서는 추가적으로 작업을 해주는게 없나요?
만약 존재한다면 어떤 작업을 해줘야 하나요?
4. MView를 생성하면 원본 테이블이 존재하는 서버에는 아무런 영향이 없을까요?
회원님들의 소중한 의견 기다리고 있겠습니다.^^
1. MView를 생성할 때 Refresh 옵션중 ON COMMIT를 사용하게 되면 원본 테이블의 데이터가 추가/변경/삭제 될 때마다 Refresh 되는게 맞는건가요?
답: 맞습니다.
이 옵션을 사용하게 되면 원본테이블이 존재하는 서버에 LOG 테이블을 생성 해줘야 하나요?
답: 기본 개념으로는 fast refresh 옵션이 쓰일때 LOG 테이블이 필요 합니다. ON-COMMIT의 경우 fast refresh옵션이 함께 쓰일 경우가 많습니다.
2.보통 MView 생성 예제를 보면 ON DEMAND 옵션을 많이 사용하는거 같던데, 해당 옵션이 ON COMMIT 보다 어떤점이 더 좋은건가요?
답: ON COMMIT옵션은 DB LINK를 통해 생성하는 MView에는 쓸수 없습니다.
ON COMMIT을 쓰시면, 원본 테이블에 대한 transaction이 늦어 질수 있읍니다. 왜냐하면, mveiw refresh까지 transaction에 포함 되기 때문입니다.
3. MView를 생성할 때, 원본 테이블이 존재하는 서버에서는 추가적으로 작업을 해주는게 없나요?
답: LOG 테이블 생성과 SELECT권한을 주는것 외에는 없다고 보시면 됩니다.
4. MView를 생성하면 원본 테이블이 존재하는 서버에는 아무런 영향이 없을까요?
답: 영향이 없다고 볼수는 없읍니다.