728x90
Multiversion Concurrency Control
Oracle은 트랜잭션 수준의 읽기 일관성을 제공한다. Oracle을 일관성 있는 데이터 조회를 제공하기 위해 롤백(=언두) 세그먼트에 정보를 저장한다. 롤백 세그먼트에는 커밋하지 않았거나 최근에 커밋한 트랜잭션에 의해 변경된 데이터가 보관되어 있다. 다음은 롤백 세그먼트의 데이터를 사용하여 일기 일관성을 어떻게 제공하는지를 도식화한 것이다.
쿼리를 실행하면 실행 시점 SCN(system change number)과 데이터 블록의 SCN과 비교하여 실행 시점 이전에 커밋된 데이터 블록만을 읽는다. 만일 SCN이 10024인 시점에 데이터가 변경되었다면 롤백 세그먼트로의 데이터로부터 SCN이 10023인 시점 이전에 커밋된 데이터 블록을 읽어와 결과값을 반환한다.
만일 다른 트랜잭션에 의해 언두 세그먼트의 데이터가 덮어씌워지는 경우 ORA-01555: snapshot too old 오류가 발생한다. 이러한 경우 롤백 세그먼트의 사이즈를 크게 늘리거나 트랜잭션이 처리하는 데이터 범위를 축소해야한다.
http://kr.forums.oracle.com/forums/thread.jspa?messageID=1698897
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/consist.htm#BABIJEJI
http://en.wikipedia.org/wiki/Multiversion_concurrency_control
728x90
'Oracle > oracle' 카테고리의 다른 글
PARALLEL DML 사용 방법 (0) | 2011.06.18 |
---|---|
Isolation Level 비교 (0) | 2011.06.12 |
Range 파티션 테이블에 파티션을 추가할 때 확인사항 (0) | 2011.06.10 |
CTAS를 통한 테이블 복제시 참고사항 (0) | 2011.05.16 |
Windows Vista, Server 2008에 10g 클라이언트 설치 (0) | 2011.05.14 |