List
Search
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의 롤백으로 인해 연쇄적으로 다른 트랜잭션도 롤백되는 현상
•
비연쇄적 스케줄
◦
연쇄적 롤백으로 발생할 수 있는 대량의 회복 연산을 방지하기 위해 연쇄적이지 않은 스케줄로 구성된 스케줄