by axiom Redo Log Buffer SCN System Change Number [2014.02.12]
Redo Log Buffer의 목적은 복구에 있다. 그렇기 때문에 Redo Log Buffer는 복구를 위해 모든 아키텍처가 구성되어 있다.
이번 강의에서는 이와 같은 Redo Log Buffer의 하나의 사상인 Log Force At Commit과 Logical Ordering Of Redo에 대해 설명한다.
Write Ahead-Logging의 경우에는 Redo Log Buffer의 비정상에 대비한 확실한 복구를 위한 아키텍처다. 데이터 복구의 기준은 트랜잭션의 Commit에 있다. 그렇기 때문에 Commit과 함께 해당 트랜잭션의 Redo Log를 기록하는 기법이 Log Force At Commit이다.
[그림 1]에서 트랜잭션이 수행된 해당 트랜잭션이 Commit된다면 LGWR이 Posting되고 LGWR에 의해 해당 트랜잭션의 Redo Log가 Redo Log File에 반드시 기록되어야만 해당 트랜잭션은 Commit을 종료할 수 있게 된다.
이와 같은 Log Force At Commit을 수행하는 경우의 몇 가지 특징을 확인해 보자.
트랜잭션이 Commit되는 동안 Log Force At Commit에 의해 해당 트랜잭션의 Redo는 반드시 Redo Log File에 기록되어야 한다. 이와 같은 상황에서 데이터베이스 버퍼 캐시에는 실제 블록이 변경되어 있을 것이다.
해당 데이터베이스 버퍼 캐시에 존재하는 변경된 블록은 DBWR에 의해 데이터 파일에 기록될 필요는 없다. 이는 Commit과는 무관하게 그 후에 발생하게 된다.
데이터베이스 시스템은 동시에 여러 유저에 의해 사용된다. 이와 같다면 동시에 여러 유저에 의해 DML이 발생하게 되고 또한 한번에 여러 트랜잭션이 동시에 또는 매우 근접한 시간에 Commit이 발생하게 된다.
이와 같은 경우 트랜잭션별로 한 번씩 LGWR에 의해 해당 Redo Log를 기록한다면 LGWR에 의한 디스크 I/O가 과다하게 발생한다.
이와 같은 이유에서 오라클 데이터베이스는 Piggyback Write/Group Commit을 수행하게 되고 이는 하나씩의 Redo Log를 Redo Log File에 기록하는 것이 아니라 잠시 대기해 한 번에 여러 개의 Redo Log를 Redo Log File에 기록해 디스크 I/O에 대한 부하를 감소시키고 있다.
이와 같은 Log Force At Commit은 해당 데이터베이스를 확실하게 복구할 수 있는 방법을 제공한다.
Redo Log File은 트랜잭션별로 Redo Log를 생성해 기록하는 방식이 아니다. Redo Log File은 단지 OS의 파일이기 때문에 해당 파일의 위에서부터 아래로 빈 공간에 순서대로 Write하게 된다. 따라서 해당 Redo Log File로 복구하는 부분은 매우 복잡해 질 수 있다.
트랜잭션별로 Redo Log를 기록한다면 해당 트랜잭션별로 복구를 수행하면 되므로 복구는 매우 수월해질 수 있다. 하지만 이와 같은 방식으로 Redo Log를 Redo Log File에 기록한다면 변경된 블록은 데이터베이스 버퍼 캐시에 기록하는 것과 성능적으로 그다지 차이가 없을 것이다.
이와 같은 이유에서 Redo Log File에 Redo Log를 기록하는 과정에는 Logical Ordering Of Redo의 개념을 사용하게 된다.
이와 같이 논리적인 순서를 정해 저장하기 때문에 Redo Log File을 이용해 쉽게 복구할 수 있게 된다. 이와 같은 Logical Ordering Of Redo를 구현하기 위해 오라클 데이터베이스는 SCN이라는 기법을 이용하게 된다.
데이터베이스 정합성을 좌우하는 SCN은 다음과 같은 특징을 가진다.
결국, 오라클 데이터베이스는 Redo Log를 생성할 때도 SCN을 이용하며 복구에도 SCN을 이용하게 된다. SCN은 데이터베이스의 정합성을 책임지고 있는 가장 중요한 요소다.
- 강좌 URL : http://www.gurubee.net/lecture/2683
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.