강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

brianyhs님의 프로필 이미지
brianyhs

작성한 질문수

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

4-5. 근데 이거 어떻게 되는거임? - InnoDB

UNDO LOG와 롤백에 관해 질문드립니다.

작성

·

14

0

1. 현재 학습 진도

  • 4-5 수강중

     

  • 트랜잭션 내 isolation level에 따른 데이터 consistency 보장을 위해, WAL(Write-Ahead Logging)시 내부적으로 사용하는 UNDO LOG와 REDO LOG를 활용한다.

 

2. 어려움을 겪는 부분

그러면 트랜잭션 내에서 rollback을 수행하면, UNDO LOG를 기반으로 디스크 내용을 트랜잭션 수행 이전 상태로 되돌린다고 이해했습니다. 맞게 이해한걸까요?

만약 이게 맞다면,
WAL로 인해 트랜잭션 내 작업들은 커밋되기 전에 디스크에 반영되지 않으므로, rollback된다면 UNDO LOG를 활용하지 않더라도 디스크 내 데이터가 이전 내용임이 보장되지 않나요?

롤백 시 UNDO LOG가 어떤 부분에서 활용되어야 하는지 이해하지 못했습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. brianyhs님.

UNDO LOG와 트랜잭션 롤백에 대해 질문을 주셨군요. 먼저, 트랜잭션의 롤백 과정에서 UNDO LOG가 어떤 역할을 하는지를 명확히 설명드리겠습니다.

트랜잭션과 UNDO LOG의 역할

  1. 트랜잭션과 WAL:

    • 트랜잭션은 데이터베이스에서 ACID 특성을 보장하는 매우 중요한 단위입니다.
    • WAL(Write-Ahead Logging)은 데이터의 무결성과 일관성을 보장하기 위해 변경 사항을 디스크에 기록하기 전에 로그에 기록합니다.
  2. UNDO LOG의 역할:

    • UNDO LOG는 트랜잭션 중에 실행된 변경 사항을 취소하기 위해 필요합니다.
    • 롤백 과정 중에 UNDO LOG를 참고하여 트랜잭션 전에 데이터 상태로 복구합니다.
  3. 롤백 시 UNDO LOG의 필요성:

    • 트랜잭션은 논리적으로는 커밋되기 전까지 디스크에 반영되지 않지만, 물리적으로 데이터가 수정되기 시작할 수 있습니다.
    • UNDO LOG는 이미 변경됐던 데이터들을 원래 상태로 되돌리기 위해 활용됩니다.
    • 따라서, UNDO LOG가 없다면 실제 변경된 데이터를 이전 상태로 복원하는 데 문제가 발생할 수 있습니다.

ROLLBACK이 되면 트랜잭션 전에 데이터 상태로 복원하는 것이 목표인데, 데이터베이스 내에서 이미 변경된 사항은 UNDO LOG를 통해 다시 원상태로 복구되는 것이며, 그 반면 실재로 디스크 외부에 완전히 커밋되지 않은 상태의 데이터들은 REDO LOG를 통해 적용이 무효화됩니다.

유사한 질문이 UNDO LOG와 트랜잭션 롤백에 관한 설명에 답변되어 있습니다.

저는 질문자님의 이해를 돕고자, 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

brianyhs님의 프로필 이미지
brianyhs

작성한 질문수

질문하기