[개발 일기] 2025.03.26 - REDO, UNDO

2025. 3. 26. 13:41·개발 일기

💡 개요

 

오늘은 DBMS에서 자주 사용되는 REDO와 UNDO에 대해 정리해 보자.

 

 

 

📕 REDO, UNDO

 

REDO와 UNDO는 데이터베이스에서 트랜잭션의 무결성을 보장하기 위해 사용되는 복구 기술이다.

 

 

두 작업의 공통적인 목적은 복구이지만 실행되는 방식은 다르다.

 

 

정확하게 말하면 작업 수행 시점이 다르다.

 

 

🛠️ REDO 실행 시점

 

REDO는 수행한 작업을 다시 할 때 사용된다.

 

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

 

만약 COMMIT이 완료된 후, 변경 사항이 디스크에 저장되기 전에 문제가 발생하면?

 

 

REDO log를 확인하고 커밋된 작업을 다시 실행한다.

 

 

즉, 이전에 커밋된 데이터를 보장하기 위해 한번 더 실행하는 것이다.

 

 

참고로 REDO 로그는 데이터베이스에 쿼리가 실행될 때마다 저장된다.

 

 

그래야 언제든지 복구를 위한 작업을 수행할 수 있기 때문이다.

 

 

 

🛠️ UNDO 실행 시점

 

UNDO는 원상태로 되돌리고자 할 때 사용된다.

 

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance / 0 WHERE id = 2;  -- 오류 발생
ROLLBACK;  -- UNDO 실행

 

UNDO는 트랜잭션 내부에서 에러가 발생한 경우 이때 동안 실행한 쿼리를 반대로 실행한다.

 

 

즉, 우리가 생각하는 트랜잭션 내부에서 에러가 발생한 경우 데이터의 무결성을 지키기 위해 데이터를 트랜잭션 시작 직전의 상태로 되돌리는 작업을 수행한다고 알 고 있는데 이건 UNDO가 하는 것이다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.03.28 - Auto Increment Long PK vs UUID  (0) 2025.03.28
[개발 일기] 2025.03.27 - 커스텀 어노테이션  (0) 2025.03.27
[개발 일기] 2025.03.25 - forward 프록시 (Nginx)  (0) 2025.03.25
[개발 일기] 2025.03.24 - JIT 컴파일러  (0) 2025.03.24
[개발 일기] 2025.03.23 - 무중단 배포  (0) 2025.03.23
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.03.28 - Auto Increment Long PK vs UUID
  • [개발 일기] 2025.03.27 - 커스텀 어노테이션
  • [개발 일기] 2025.03.25 - forward 프록시 (Nginx)
  • [개발 일기] 2025.03.24 - JIT 컴파일러
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.03.26 - REDO, UNDO
상단으로

티스토리툴바