권순용의 DB 이야기
데이터베이스의 수호자, Redo Log Buffer 1부. 0 1 5,021

by axiom Redo Log Buffer Physiological Logging Physical Logging Logical Logging [2013.12.19]


데이터베이스 아키텍처를 분석하고 학습하다 보면 항상 데이터 베이스 내부 구조에 대한 호기심이 생기게 마련이다. 이와 같은 데이터베이스 내부 아키텍처는 실제 업무를 수행하는 데 큰 도움이 되지 않을 수도 있다.

하지만 데이터베이스 내부 아키텍처를 이해하는 순간, 데이터베이스에 문제가 발생하는 경우에 정확한 그리고 논리적인 분석이 가능해진다. 그렇기 때문에 데이터베이스를 확실하게 분석하기 위해서는 데이터베이스 Internal은 반드시 이해하는 것이 유리하다.

이번 강의부터는 데이터베이스 Internal에 대한 긴 이야기를 시작하기로 한다. 먼저 이번 강의에는 데이터베이스의 복구 및 데이터 정합성을 책임지는 Redo Log Buffer에 대해 확인해 보자.

Redo Log Buffer의 사상

  • [그림 1] Redo Log Buffer의 다섯 가지 사상
  • Redo Log Buffer의 다섯 가지 사상

Redo Log Buffer는 탄생의 비밀을 가지고 있다. Redo Log Buffer의 탄생은 [그림 1]과 같은 사상을 가지고 태어났다.

이 다섯 가지 사상을 가지고 Redo Log Buffer는 탄생했고 해당하는 5개의 사상이 Redo Log Buffer의 탄생 비밀인 것이다. 이번 시간에는 그 각각의 사상을 간단히 확인해 보기로 하자.

  • - Physiological Logging
  • - Page Fix Rule
  • - Write Ahead Log
  • - Log Force At Commit
  • - Logical Ordering Of Redo

그럼 다섯 가지 사상에 대해 이제부터 하나씩 확인해 보자.

Log Buffer의 효율성을 위한 Physiological Logging

첫 번째로 Physiological Logging을 확인해 보자. Physiological Logging은 Physical Logging과 Logical Logging의 합성어다.

이는 바로 Physical Logging과 Logical Logging을 결합한 방식을 이용한다는 의미를 가진다. 그렇다면 Physical Logging과 Logical Logging은 어떤 방식으로 Logging하는 것인가?

  • - Physical Logging : Physical Logging은 변경 전의 Before Image와 After Image를 모두 저장하는 방식이다.
  • - Logical Logging : Logical Logging은 변경 전의 Before Image와 After Image를 모두 저장하는 방식이 아니라 단지 실제 작업을 수행한 명세서를 저장하는 방식이다.

Physical Logging과 Logical Logging의 개념은 각각 위와 같으며, 이들 단어만으로 예측해 보면 이 둘이 결합된 Physiological Logging은 Before Image와 After Image를 저장하는 방식이며 명세서 형태로 저장하는 방식을 의미하게 된다.

  • [그림 2] Physiological Logging의 이해
  • Physiological Logging의 이해

이와같이 정의하면 Physiological Logging의 개념이 어느 정도 확립된다. 그렇다면 각각의 Logging 방식의 차이를 [표 1]을 통해 확인해 보자.

항목 Physical Logging Logical Logging Physiological Logging
Logging 방식 - Before Image + Ater Image - 작업 명세서로 표시(OP Code 이용) - Before Image + Ater Image
- 작업 명세서로 표시(OP Code 이용)
Logging Level 변경 데이터 블록 변경 데이터 변경 데이터
Logging 양 많음 적음 보통
복구 수준 높음 낮음 높음

[표 1]에서 보는 것처럼, Physical Logging은 Before Image와 After Image를 동시에 저장하므로 Logging 양은 많지만 복구는 이미지를 그대로 저장하므로 손쉽게 복구할 수 있다.

하지만 Logical Logging은 명세서 형식이므로 Logging 양은 매우적지만 복구가 쉽지 않은 방식이다.

이에 비해 Physiological Logging은 Before Image와 After Image를 저장하지만 Logging 양은 보통이거나 적게 생성된다.

이는 Physical Logging처럼 변경되는 데이터 블록의 Before Image와 After Image를 저장하는 방식이 아니라 실제로는 변경이 발생하는 데이터만의 Before Image와 After Image를 저장하기 때문이다.

그에 대한 보안으로 작업 명세서인 OP Code를 이용하게 된다. 또한 변경되는 데이터의 Before Image와 After Image를 저장하므로 복구도 손쉽게 가능하다.

오라클 데이터베이스는 위와 같이 Physiological Logging 방식을 사용했으며 이는 최소의 Logging으로 최대의 복구를 수행하기 위한 최선의 선택이 아닐까라고 생각한다.

복구를 위해 전체 Image를 저장하면 복구 확률은 매우 높지만 Logging 양의 증가로 전체적인 데이터베이스의 성능이 저하될 수 있기 때문이다.

다음 강의에는 Physiological Logging의 실제 사례에 대해 확인해 보기로 하자.

- 강좌 URL : http://www.gurubee.net/lecture/2666

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 아발란체 [2013.12.20 13:30:41]
음... 어렵지만 매우 궁금했던 부분이기도 하고 흥미롭네요.
좋은 강좌 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입