글

라벨이 읽기일관성인 게시물 표시

데이터베이스 - 읽기 일관성

이미지
읽기 일관성 지금까지 우리가 DML데이터에 대해서 배웠던 것들은 모두 읽기 일관성을 유지하기 위함이다. 데이터의 읽기 일관성이 필요한 이유는 아래와 같다. 데이터를 검색하는 사용자들과 변경하는 사용자들 사이에 일관적인 관점을 제공한다. 즉 변경 중인 데이터에 대해 다른 사용자들이 볼 수 없도록 한다. 데이터를 변경하는 사용자들 사이에 일관적인 데이터베이스 변경 방법을 제공한다. 따라서 동일한 데이터를 동시에 변경하여 발생하는 혼란을 방지한다. 구현 원리 일단 데이터가 변경(insert, delete, update)가 될 때 오라클 데이터베이스는 변경 전 데이터를 undo 세그먼트에 임시 저장한다. 따라서 변경하지 않은 데이터에 대해서 다른 사용자들이 보고 있게 된다. 이 후 트랜잭션이 종료된 후에 변경된 데이터베이스의 결과를 모든 사용자가 볼 수 있게 함으로써 읽기 일관성을 유지하고, 이러한 메커니즘에 따라 사용자들은 가장 최근의 커밋 된 데이터만을 보게 된다. 이를 위해서 사용하는 것이 ROCK이다. 즉 ROCK은 위에서 새롭게 변경되고 있는 데이터 블록과 undo 데이터 블록이 하나씩 있는 상태에서 또 다른 데이터 블록이 생길 수 없도록 수정이 불가능하게 막는 기능이라고 할 수 있다. 이를 통해서 만약에 commit이 이루어지면 데이터 블록으로 모든 세션이 동기화되고, rollback이 일어난다면, undo 세그먼트로 동기화가 될 것이다.