본문 바로가기

DB/MySQL

리두로그와 언두로그

리두로그

트랜잭션이 만들어내는 모든 변경사항을 순차적으로 기록한다.

주로 시스템이 비정상적으로 종료되었을 때 트랜잭션의 변경사항을 복구하는데 사용된다.

시스템이 비정상적으로 종료되었을 떄, 마지막 체크포인트 이후에 발생한 모든 트랜잭션을 다시 실행해 데이터를 복구하는데 사용된다.

동작

  1. 트랜잭션이 커밋될 때 메모리의 로그 버퍼에 먼저 기록되고, 이후 디스크에 플러시된다.
  2. 체크포인트는 더티 페이지를 디스크에 플러시 하는 것과 관련이 있으며, 리두 로그와는 별도의 프로세스이다.
  3. 체크포인트 발생시, 변경된 데이터 페이지가 디스크의 데이터 파일에 플러시되어 데이터의 일관성을 유지한다.

WAL 원칙

데이터 페이지를 디스크에 기록하기 전에 해당 변경 사항을 먼저 리두 로그에 기록한다.

(버퍼 풀의 페이지보다도 리두로그에 먼저 기록한다.)

더티 페이지

메모리 내 버퍼 풀에서 변경된 데이터 페이지를 나타낸다.

체크포인트

변경된 페이지를 디스크에 플러시한다.

디스크의 리두로그와 데이터 페이지의 상태를 동기화한다.

언두로그

  1. 트랜잭션의 롤백 디비용
  2. 트랜잭션의 격리 수준을 유지하면서 높은 동시성 제공

'DB > MySQL' 카테고리의 다른 글

바이너리 로그의 복제 데이터 포맷  (1) 2023.11.09
[Real MySQL] 인덱스 (2)  (0) 2023.08.31
[Real MySQL] 트랜잭션과 잠금  (0) 2023.08.31
Isolation Levels  (0) 2023.07.29
InnoDB Strage Engine  (0) 2023.03.09