맨위로가기

트랜잭션 로그

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

트랜잭션 로그는 데이터베이스 시스템에서 변경 사항을 기록하는 메커니즘이다. 각 로그 레코드는 로그 시퀀스 번호(LSN)를 가지며, 이전 레코드를 참조하는 구조를 통해 연결 리스트와 유사한 형태를 갖는다. 로그 레코드에는 트랜잭션 번호와 레코드 종류가 포함되며, 갱신, 보상, 커밋, 중단, 체크포인트 레코드 등 다양한 유형이 있다. 각 레코드는 데이터베이스의 변경 사항을 기록하고, 롤백, 커밋, 체크포인트와 같은 작업의 상태를 나타내며, 복구 알고리즘에 활용된다.

2. 구조

트랜잭션 로그는 다음과 같은 구조를 갖는다.


  • '''로그 시퀀스 번호''' (Log Sequence Number영어): 로그 레코드의 고유 식별자이다. 일반적으로 번호가 고유하게 증가하는 값이 할당되며, ARIES와 같은 복구 알고리즘에서 사용된다.
  • '''마지막 LSN''': 마지막 레코드에 대한 참조. 트랜잭션 로그는 연결 리스트와 같은 구조를 가지게 된다.
  • '''트랜잭션 번호''': 레코드를 생성한 데이터베이스의 트랜잭션 번호.
  • '''종류''': 레코드 유형을 나타낸다.


모든 로그 레코드는 일반적인 특성 외에도 작업마다 고유의 특성을 가지고 있다. 다음은 일반적인 데이터베이스가 사용하는 로그 레코드의 유형이다.

  • '''업데이트 레코드'''는 데이터베이스 업데이트(변경)를 기록하며 다음 속성을 갖는다:
  • '''페이지 번호''': 변경된 페이지 번호.
  • '''길이 및 위치''': 페이지에서 변경된 영역.
  • '''업데이트 전후 이미지''': 업데이트된 영역의 업데이트 이전 및 업데이트된 값 (데이터베이스에 따라 양쪽 또는 한쪽만 기록).
  • '''보상 레코드'''는 업데이트 롤백을 기록한다. 레코드는 별도 업데이트 레코드를 가리킨다.
  • '''Undo Next LSN''': 보상 처리가 필요한 다음 레코드 번호.
  • '''커밋 레코드'''는 트랜잭션 커밋을 기록한다.
  • '''중단 레코드'''는 트랜잭션 롤백을 기록한다.
  • '''체크포인트 레코드'''는 체크포인트 처리가 완료되었는지를 기록한다. 복구 처리 속도 향상에 기여한다.
  • '''Redo LSN''': 체크포인트 이후 처음 변경 사항 처리 레코드 번호 (이 레코드부터 작업을 다시 실행).
  • '''Undo LSN''': 체크포인트에서 수행 중이던 트랜잭션이 기록한 가장 오래된 레코드 번호 (이 레코드 추가 처리를 보상해야 할 가능성이 있음).

3. 로그 레코드 종류

트랜잭션 로그는 데이터베이스 시스템에서 변경 사항을 기록하는 데 사용되며, 다음과 같은 종류의 로그 레코드를 포함한다.[1]


  • 업데이트 레코드 (Update Record): 데이터베이스의 변경(업데이트) 사항을 기록한다.
  • 보상 레코드 (Compensation Log Record, CLR): 업데이트의 롤백(이전 상태로 되돌리는 것)을 기록한다.
  • 커밋 레코드 (Commit Record): 트랜잭션 커밋을 기록한다.
  • 중단 레코드 (Abort Record): 트랜잭션 롤백을 기록한다.
  • 체크포인트 레코드 (Checkpoint Record): 체크포인트(검사 지점) 처리가 완료되었음을 기록하며, 복구 처리 속도를 높인다.
  • 완료 레코드 (Complete Record): 특정 트랜잭션에 대한 모든 작업이 완료되었음(완전히 커밋되었거나 중단되었음)을 기록한다.

3. 1. 업데이트 레코드 (Update Record)

업데이트 레코드는 데이터베이스 업데이트(변경)를 기록하며, 다음과 같은 속성을 갖는다.[1]

  • '''페이지 번호''': 변경된 페이지의 번호를 나타낸다.
  • '''길이 및 위치''': 페이지에서 변경된 영역을 나타낸다.
  • '''업데이트 전후 이미지''': 업데이트된 영역의 업데이트 이전 및 업데이트된 값을 나타낸다. 데이터베이스에 따라 양쪽 또는 한쪽만 기록하는 차이가 있다.

3. 2. 보상 레코드 (Compensation Log Record, CLR)

보상 로그 레코드(Compensation Log Record, CLR)는 데이터베이스 갱신(업데이트)의 롤백을 기록하며, 별도의 업데이트 레코드를 가리킨다.[1] 각 레코드는 다음의 정보를 포함한다.

  • '''Undo Next LSN''': 보상 처리가 필요한 다음 레코드 번호.[1]

3. 3. 커밋 레코드 (Commit Record)

커밋 레코드는 트랜잭션의 커밋을 기록한다.[1]

3. 4. 중단 레코드 (Abort Record)

트랜잭션 롤백을 기록한다.[1] Abort Record영어는 트랜잭션을 중단하고 롤백하기로 한 결정을 기록하는 레코드이다.

3. 5. 체크포인트 레코드 (Checkpoint Record)

체크포인트 레코드는 체크포인트 처리가 완료되었음을 기록한다. 이 레코드는 복구 처리 속도를 높이는 데 기여하는데, 로드할 가장 오래된 레코드를 알려주기 때문이다. 체크포인트 레코드의 내용은 다음과 같다.

  • '''Redo LSN''': 체크포인트 이후 처음 변경 사항 처리 레코드 번호. 이 레코드부터 작업을 다시 실행해야 한다.
  • '''Undo LSN''': 체크포인트에서 수행 중이던 트랜잭션이 기록한 가장 오래된 레코드 번호. 이 레코드 추가 처리를 보상해야 할 가능성이 있다.


PostgreSQL과 같이 체크포인트를 생성하는 동안 모든 더티 페이지가 플러시되는 경우, 체크포인트 레코드는 다음을 포함할 수 있다.

  • '''redoLSN''': 더티 페이지에 해당하는 첫 번째 로그 레코드에 대한 참조. 즉, 체크포인트 시점에 플러시되지 않은 첫 번째 업데이트이며, 복구 시 다시 실행이 시작되어야 하는 위치이다.
  • '''undoLSN''': 진행 중인 가장 오래된 트랜잭션의 가장 오래된 로그 레코드에 대한 참조. 진행 중인 모든 트랜잭션을 실행 취소하는 데 필요한 가장 오래된 로그 레코드이다.

3. 6. 완료 레코드 (Complete Record)

완료 레코드는 특정 트랜잭션에 대한 모든 작업이 완료되었음(완전히 커밋되었거나 중단되었음)을 기록한다.[1]

참조

[1] 웹사이트 Microsoft, The Transaction Log (SQL Server) https://msdn.microso[...]
[2] 웹사이트 A beginner’s guide to SQL Server transaction logs http://www.sqlshack.[...] Ivan Stankovic 2014-02-11
[3] 웹사이트 Understanding the importance of transaction logs in SQL Server, SQL Server transaction log maintenance http://www.techrepub[...] Crowe, Chizek 2004-11-11
[4] 웹사이트 Logfiles https://www.neurobs.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com