Search
🏫

[데이터베이스] 8. 트랜잭션

[데이터베이스] 10. 회복 시스템
CS
Database
2023/06/0715:51
[데이터베이스] 10. 회복 시스템
CS
Database
2023/06/0715:51

1. 트랜잭션의 이해

데이터 동시 접근의 문제
동일 데이터에 다수 사용자의 접근 허용시 일관성 훼손

1.1. 트랜잭션의 개념과 특성

트랜잭션의 개념
데이터베이스를 조작하기 위한 하나의 논리적 단위를 이루는 일련의 연산 집합
데이터베이스를 사용하여 처리하는 작업을 하나의 묶음으로 인식하여 묶음 단위로 실행되도록 정의한 개념
트랜잭션의 특성
다수의 연산으로 구성된 트랜잭션이 사용자에게 단일작업처럼 다뤄지도록 ACID 특징 준수
ACID
원자성(Atomicity) - All or Nothing
일관성(Consistency) - 트랜잭션 전/후가 일관된 상태를 유지
고립성(Isolation) - 다른 트랜잭션에 영향을 주거나/받으면 안됨
지속성(durability) - 트랜잭션 완료된 결과는 영구적으로 지속되어야 함
트랜잭션 연산자
연산
Read(X)
Write(X)
실행의 연산
Commit
Rollback

1.2. 트랜잭션의 상태

동작 - 트랜잭션 시작 준비 또는 실행 중인 상태
부분 커밋 - 마지막 연산이 실행한 직후의 상태 (트랜잭션 메모리에 남아 있는 상태)
커밋 - 모든 실행이 성공적으로 완료된 상태
실패 - 실행이 정상적으로 진행될 수 없는 상태
중단 - 실행 실패 롤백, 시작 이전의 상태로 돌아감

2. 트랜잭션의 동시성

2.1. 스케쥴

스케쥴
다수의 트랜잭션에 포함된 연산의 실행 순서를 명시한 것
직렬 스케쥴
각 트랜잭션에 속한 모든 연산이 순차적으로 실행되는 스케줄
병렬 스케줄
비순차적으로 실행되는 스케줄
하나의 트랜잭션이 완료되기 전에 다른 트랜잭션이 실행되는 스케줄
일관성 훼손 가능성 내포
직렬 가능 스케줄
트랜잭션간 연산 순서를 교환하여 트랜잭션을 직렬 스케줄과 동등하게 변환이 가능한 스케줄
사용된 Read와 Write 연산 교환 시 상황에 따라 실행 결과에 일관성이 훼손되는 충돌 ㅂ라생

2.2. 충돌

충돌 동등
특정 스케줄 S에서 충돌이 일어나지 않는 연산의 순서를 바꿔 스케줄 S’을 변환이 가능한 상태
write는 같은 데이터를 다룰때 충돌 발생
read는 충돌 발생 X
충돌 직렬성
순서 교환을 가능한 연산을 교환하여 직렬 스케쥴의 연산과 동등하게 변환이 가능한 스케쥴

3. 트랜잭션의 회복

원자성을 보장하기 하기 위해 트랜잭션 실패 시 실행 이전으로 복원하는 기법
abort, rollback
회복 불가능한 스케쥴
커밋된 트랜잭션은 롤백 불가
회복 가능한 스케쥴
T1이 기록한 데이터를 T2가 읽을때 T1의 커밋이 T2 보다 먼저 나타나는 스케줄
연쇄적 롤백 유발 가능
T7의 롤백으로 인해 연쇄적으로 다른 트랜잭션도 롤백되는 현상
비연쇄적 스케줄
연쇄적 롤백으로 발생할 수 있는 대량의 회복 연산을 방지하기 위해 연쇄적이지 않은 스케줄로 구성된 스케줄