728x90

Multiversion Concurrency Control


Oracle은 트랜잭션 수준의 읽기 일관성을 제공한다. Oracle을 일관성 있는 데이터 조회를 제공하기 위해 롤백(=언두) 세그먼트에 정보를 저장한다. 롤백 세그먼트에는 커밋하지 않았거나 최근에 커밋한 트랜잭션에 의해 변경된 데이터가 보관되어 있다. 다음은 롤백 세그먼트의 데이터를 사용하여 일기 일관성을 어떻게 제공하는지를 도식화한 것이다.


Description of Figure 13-1 follows


쿼리를 실행하면 실행 시점 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://ukja.tistory.com/178

http://en.wikipedia.org/wiki/Multiversion_concurrency_control

728x90

+ Recent posts