9장 트랜잭션
<트랜잭션>
대규모 데이터 동시접근 - 동시성 제어
- 회복: 도중에 고장이나도 일관성 유지 - 로그 유지
**ACID:
1) Atomicity 원자성 회복
1 또는 0. UNDO/ REDO
2) Consistency 일관성 동시성
수행 전 후 일관성
3) Isolation 고립성 동시성
갱신중 데이터 접근 금지. 고립 수준.
4) Durability 지속성 회복
고장나도 손실 없음
- COMMIT: 완전 반영
- ABORT: 트랜잭션 철회 (비성공적 종료)
<동시성 문제>
1) 갱신 손상 lost update: 덮어쓰기
2) 오손 데이터 읽기 dirty read : 미완료 트랜잭션 읽기
3) 반복할 수 없는 읽기 unreadable read: 중복 읽기
<LOCKING>
LOCK - UNLOCK
로크 테이블
독점 로크(X)
공유 로크(S)
로크 확장 단계 - 로크 수축 단계
<회복>
- 재수행: REDO - 지속성 COMMIT 이전
- 취소: UNDO - 원자성 COMMIT 이후
- 즉시 갱신: 로그 이용
- WAL: 로그 버퍼에 로그 기록 -> 데이터베이스에 갱신 기록
- 체크 포인트:회복시 재수행할 트랜잭션 수 감소 위해 주기적 확인.
<고립수준>
1) READ UNCOMMITED: 동시성 높음 정확성 낮음
공유로크 없이 읽기 - 오손 데이터
2) READ COMMITED: 디폴트
읽기 끝나자 마자 로크 해제
반복할 수 없는 읽기
3) REPEATABLE READ
끝날때까지 공유로크
4) SERIALOZABLE
튜플과 인덱스 모두 공유로크, 끝까지..
Comments
Post a Comment