2009년 5월 13일 수요일

InnoDB REDO,UNDO로그구조

REDO로그의 각 레코드는 다음과 같다. 

  • Page Number( 4bytes) 테이블스페이스내의 페이지 번호
  • Offset (2bytes)  페이지내의 옵셋
  • Record Type(1byte)  INSERT, UPDATE, DELETE의 구별
  • 변경후의 데이타

UNDO로그

 UNDO로그의 각 레코드는 다음과 같은 관리정보를 지닌다. 
  •  Primary Key의 값(페이지 번호가 아니다.)
  • 이 레코드를 변경한 트랜잭션ID
  • 변경전의 각 필드값
테이블스페이스내의 롤백세그먼트에 UNDO로그의 각 레코드가 기록된다. 

INSERT조작의 경우에 , 커밋되면 롤백세그먼트에서 UNDO로그의 레코드가 지워진다. 

UPDATE, DELETE의 경우에,  버퍼가 디스크에 flush되고 history list라고 불리우는 리스트에 UNDO로그 레코드가 추가된다. 

 history list에 있는 UNDO 로그의 레코드는 필요하지 않게 되었을 때 리스트로부터 지워진다. 

이것을 PURGE operation이라도 부른다.