(2023.2.25) Today_I_Learned_day-131

imRound·2023년 2월 25일
0
post-thumbnail

Transaction의 REDO, UNDO 연산 이란?

장비에 장애나 비정상 종료가 발생시 REDO / UNDO를 사용해 데이터를 복구하고, 커밋하지 않은 데이터 롤백 수행

REDO

  • 복구 역할, DB에서 수행한 모든 기록은 REDO에 저장
  • 사용자가 했던 작업을 그대로 함 (실패한걸 다시 시도)ex) 시스템 장애 발생 (UNDO + TRANSACTION 날라감) => REDO 데이터를 이용해 마지막 Check Point 부터 장애까지의 DB BUFFER CACHE 복구 => REDO에 의해서 UNDO가 복구 => UNDO로 차례대로 Rollback 실행하며 커밋하지 않은 데이터 되돌림

UNDO 역할

  • 작업 롤백(복구), 읽기 일관성을 수행
  • 복구, 롤백 : 사용자가 했던 작업을 반대로 진행하며 복구 (원상태로 돌림)
  • 복구, 롤백 : INSERT, UPDATE, DELETE의 변경되기 전 데이터를 보관하는 곳ex) 데이터 저장 중 세션이 COMMIT 없이 비정상 종료됨 => UNDO를 통한 복구 실행 (ROLLBACK) (set no = no + 1 => set no = no - 1)
  • 일관성 : 트랜잭션의 격리 수준 유지을 위한 동시성 제공

UNDO의 데이터 기억 방법

  • INSERT : insert 행의 Id 기록, UPDATE : 바뀌기 이전 값 기록, DELETE : 삭제한 모든 데이터 기록
  • ex) UPDATE user SET name='선민' WHERE user_id = 1 트랜잭션을 커밋전 실제 데이터 파일 내용을 선민으로 변경 / 언두 영역에 이전 값 abc 백업Commit시 현재 상태 그대로 적용 / 롤백시 백업된 데이터를 다시 데이터 파일로 복구
profile
Django 개발자

0개의 댓글