본문 바로가기
강의 및 강연/원티드 프리온보딩 챌린지

프리온보딩 백엔드 챌린지(DB) - DB 기본기 다지기2 -

by 요섹남 2023. 10. 22.

트랜잭션(Transaction)

트랜잭션은 작업의 완전성을 보장하며, 사용자의 작업셋을 모두 완벽하게 처리하거나 처리하지 못하면 원상태로 복후하는걸 원칙으로 두고 있다.

 

ACID(트랜잭션의 특징)

1. Atomicity(원자성)

- 트랜잭션은 작업 단위로 분할되지 않고, 전체 작업이 성공 또는 실패로 완료됩니다.

- 모든 작업이 반드시 수행되거나 전혀 수행되지 않아야 합니다.

- 더이상 쪼개질 수 없는 가장 작은 단위

 

2. Consistency(일관성)

- 트랜잭션이 시작하기 전과 끝난 후에 데이터베이스는 일관된 상태여야 합니다.

- 트랜잭션 실행 전과 실행 후에 데이터베이스의 무결성 규칙을 준수해야 합니다.

- 예를 들어 마지막 한 개 남은 상품을 동시에 2명의 고객이 주문할 수 없도록, 카드 한도 초과되려고 하는데 동시에 2가지 아이템을 주문할 수 없도록

 

3. Isolation(고립성)

- 복수의 트랜잭션이 동시에 실행 중이더라도, 각 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않아야 합니다.

- 각 트랜잭션은 격리되어 실행되어야 합니다.

- 독립되지 않으면 발생할 수 있는 문제

 

4. Durability(지속성)

- 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 합니다.

- 시스템의 장애나 다운 시에도 데이터의 일관성을 유지해야 합니다.

 

언두로그(Undo log)

언두로그는 데이터베이스 관리 시스템(DBMS)에서 트랜잭션 처리에 사용되는 중요한 메커니즘 중 하나이다. 언두로그는 트랜잭션 롤백, 일관성 유지, 데이터 복구 및 병행 제어를 지원하기 위해 사용된다.

 

1. 트랜잭션 롤백

- 언두로그는 트랜잭션의 모든 변경 사항을 기록하는데 사용된다.

- 트랜잭션 실행 중에 오류가 바랭하거나 롤백이 필요한 경우, 이로그를 사용하여 트랜잭션의 모든 변경 사항을 원래 상태로 복구할 수 있다.

 

2. 일관성 유지

- 트랜잭션 실행 중에 DBMS는 Undo log를 사용하여 변경 상황을 임시로 저장한다.

- 트랜잭션이 완료되기 전에 변경 사항을 데이터베이스에 적용하지 않고, 다른 트랜잭션이 읽지 못하도록 하는 중요한 역할을 한다.

 

3. 데이터 복구

- 데이터베이스 시스템의 크래시 또는 장애 발생 시 Undo log는 데이터베이스를 이전 상태로 복구하는 데 사용된다.

- 이전 상태로의 복구를 위해 Undo log에서 저장된 변경 사항을 역순으로 적용함으로써 데이터 일관성을 복구한다.

 

4. 병행 제어

- 병행 처리 환경에서 여러 트랜잭션의 동시 실행을 관리하기 위해 Undo log는 변경 사항을 기록하고 트랜잭션 간 충돌을 방지하는데 사용된다.

 

구성 요소

- 트랜잭션 id : 어떤 트랜잭션에 대한 Undo log인지 식별하기 위한 고유한 트랜잭션 식별자

- 페이지 번호 : 변경된 데이터 페이지를 가리키는 정보

- 이전 데이터 값 : 변경되기 전 데이터의 값

- 연산 유형 : 트랜잭션에서 수행한 연산(삽입, 업데이트, 삭제)을 나타내는 정보