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