트랜잭션
- 인가받지 않은 사용자로부터 데이터를 보장받기 위해 DBMS가 가져야하는 특성
: 데이터베이스 시스템에서 하나의 논리적 기능을 적상적으로 수행하기 위한 작업의 기본 단위
트랜잭션의 특성
- 원자성 (Autonomy)
: 연산 중 하나라도 실패할 경우 전체를 취소
: commit / roll back / 회복성 보장
- 일관성 (Consistency) <병행제어>
: 트랜잭션 실행완료 후 데이터의 상태가 변하지 않아야함 (ex) 데이터타입 등..)
: 무결성 제약 조건 / 동시성 제어
- 격리성 (Isolation)
: 트랜잭션 실행 중 연산의 중간결과를 다른 트랜잭션에서 접근 불가
ㆍ고립화 수준
: Read Uncommitted (연산중인 데이터에 대한 읽기 허용 / 연산 불허)
: Read Committed (연산 및 커밋이 완료된 데이터에 대해서만 읽기 허용)
: Repeatable Read (데이터를 읽는 동안 종료시까지 해당 데이터에 대한 갱신 및 삭제 제한)
: Serializeable Read (특정 데이터 영역을 순차적으로 읽을때 해당 데이터의 전체 영역에 대한 접근 제한)
- 영속성 (Durability) <회복기법>
: 성공이 완료된 트랜잭션의 결과는 영속적으로 적용
트랜잭션의 상태변화
- 활동 (Active)
: 트랜잭션이 실행중인 상태
- 부분 완료 (Partially Committed)
: 마지막 연산 실행후 commit하기전 상태
- 완료 (Committed)
: Commit후 트랜잭션이 종료되어 DB에 적용된 상태
- 실패 (Failed)
: 트랜잭션 실행 중 오류로 중단된 상태
- 철회 (Aborted)
: 트랜잭션이 비정상적으로 종료되어 RollBack을 수행한 상태
트랜잭션 제어언어 (TCL, Transaction Control Language)
- 명령어
ㆍCOMMIT
: 트랜잭션 결과를 영구적으로 저장
ㆍROLLBACK
: 트랜잭션 연산을 무효
ㆍCHECKPOINT
: Rollback 사용시기 설정
병행제어 (일관성 주요기법)
- 데이터베이스의 일관성 유지를 위한 상호작용 제어 기법
- 목적
: DB 공유 최대화 / 시스템 활용도 최대화 / DB일관성 유지 / 응답시간 최소화
- 병행제어 미 보장시 문제점
ㆍ갱신손실 (Lost Update)
: 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸때 발생하는 오류
ㆍ현황 파악 오류 (Dirty Read)
: 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조
ㆍ모순성 (Inconsistency)
: 두 트랜잭션의 동시실행으로 인한 DB 일관성 결여
ㆍ연쇄복귀 (Casacading Rollback)
: 복수의 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리를 취소할 경우 이미 처리된 부분에 대한 취소 불가
병행제어 기법
- 로킹 (Locking)
: DB의 일관성과 무결성 유지를 위한 직렬화 기법
ㆍ로킹단위 (한꺼번에 로킹할 수 있는 객체의 크기)
: DB / File / Record
ㆍ로킹단위 클수록 공유도 및 오버헤드 감소
- 낙관적 검증
: 트랜잭션 종료시에 검증을 수행한 뒤 DB에 반영
- 타임 스탬프 순서 (Time Stamp Ordering)
: 트랜잭션 수행전 트랜잭션과 갱신 데이터에 대해 타임 스탬프를 부여하여 부여된 시간에 따라 수행
- 다중버전 동시성 제어 (MVCC, Multi Version Concurrency Control)
: 타임스탬프를 비교하여 직렬 가능성이 보장되는 버전을 채택
회복기법 (영속성 주요 기법)
- 손상된 DB를 복구시키는 작업
- 로그기반 회복기법
ㆍ지연 갱신 회복 기법
: 완료되기 전까지 기록 금지
ㆍ즉각 갱신 회복 기법
: 수행 중 갱신 결과를 바로 반영
- 체크포인트 회복 기법
: 장애 발생시 검사점 이후 처리된 트랜잭션에 대해서만 복원
- 그림자 페이징 회복 기법
: 수행시 복제본을 생성하여 이를 이용해 복구
Refference
'Certification > 정보처리기사' 카테고리의 다른 글
응용 SQL 작성 (0) | 2021.04.11 |
---|---|
데이터베이스 기본 (SQL) (0) | 2021.04.11 |
프로그래밍 개념 (0) | 2021.04.10 |
프로그래밍 기초 2 (연산자 ~ 객체지향) (0) | 2021.04.10 |
프로그래밍 기초 1 (자료형 ~ 식별자) (0) | 2021.04.10 |