트랜잭션 1

트랜잭션 1

1. 트랜잭션(Transaction)

 - DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

 

2. 트랜잭션의 특성

특성 설명
원자성
(Atomicity)
트랜잭션을 구성하는 연산 전체모두 정상적으로 실행되거나 모두 취소되어야 함
일관성
(Consistency)
시스템이 가지고 있는 고정요소트랜잭션 수행 전트랜잭션 수행 완료 후상태가 같아야 함
격리성 = 고립성
(Isolation)
동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함
영속성 = 지속성
(Durability)
성공이 완료된 트랜잭션의 결과영속성으로 DB에 저장되어야 함

 

3. 트랜잭션 제어

 - TCL 명령어

명령어 핵심 설명
커밋
(COMMIT)
트랜잭션 확정 - 트랜잭션을 메모리에 영구 저장
- 하나의 트랜잭션이 끝나고, DB가 일관성 있는 상태에 있거나 하나의 트랜잭션이 끝날 때, 사용
롤백
(ROLLBACK)
트랜잭션 취소 - 트랜잭션 내역을 저장 무효화시킴
- 하나의 트랜잭션이 비정상적으로 종료되어 트랜잭션 원자성이 깨질 경우, 처음부터 다시 시작 or 부분적으로 연산 취소
체크포인트
(CHECKPOINT)
저장 시기 설정 - ROLLBACK을 위한 시점을 지정

 

4. 병행 제어

 - 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, DB 일관성 유지를 위해 상호 작용을 제어하는 기법

 

5. 병행 제어 미보장 시 문제점

문제점 설명
갱신 손실
(Lost Update)
먼저 실행된 트랜잭션의 결과 나중에 실행된 트랜잭션이 덮어쓸 때, 발생하는 오류
현황 파악오류
(Dirty Read)
트랜잭션의 중간 수행 결과 다른 트랜잭션이 참조하여 발생
모순성
(Inconsistency)
두 트랜잭션이 동시에 실행되어 DB의 일관성이 결여됨
연쇄복귀
(Cascading
Rollback)
복수의 트랜잭션이 데이터 공유 , 특정 트랜잭션이 처리를 취소할 경우, 트랜잭션이 처리한 곳의 부분을 취소하지 못함

 

6. 병행 제어 기법의 종류

기법 설명
로킹
(Locking)
- 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
 - 로킹의 특징
    - DB, 파일, 레코드 등은 로킹 단위가 될 수 있음
        ※ 로킹 단위 : 한꺼번에 로킹할 수 있는 객체의 크기
    - 로킹 단위 => DB 공유도
    - 로킹 단위 => 로킹 오버헤드
낙관적 검증 - 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시, 검증을 수행
타임 스탬프 순서  - 트랜잭션이 실행 전, 타임스탬프를 부여부여된 시간에 따라 트랜잭션 작업을 수행
다중버전 동시성 제어  - 트랜잭션의 타임스탬프접근하려는 데이터의 타임스탬프비교, 직렬가능성이 보장되는 버전을 선택해 접근

 

7. 고립화 수준 (Isolation Level)

 - 다른 트랜잭션 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도

 

8. 회복 기법

 - 트랜잭션을 수행하는 도중 장애로 인해 손상된 DB 손상되기 이전의 정상적인 상태로 복구시키는 작업

 

9. 회복 기법 종류

기법 설명
로그 기반 회복 기법 - 지연 갱신 회복 기법 : 트랜잭션이 완료되기 전까지 DB에 기록 X
- 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영
체크 포인트 회복 기법
(Checkpoint Recovery)
- 장애 발생 , 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원
그림자 페이징 회복 기법
(Shadow Paging Recovery)
- DB 트랜잭션 수행 , 복제본을 생성DB 장애 , 이를 이용해 복구

 

회복 기법 관련 용어

    - Redo : 트랜잭션들의 작업을 재 작업하는 기법

    - Undo : 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법

 

'정보처리기사 > DB' 카테고리의 다른 글

집계성 SQL 작성  (0) 2023.03.29
트랜잭션 2  (0) 2023.03.29
클래스  (0) 2023.03.27
사용자 정의 함수  (0) 2023.03.25
사용자 정의 자료형 활용  (0) 2023.03.25