트랜잭션 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 |