Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

Transaction 트랜잭션 본문

IT/Computer Science

Transaction 트랜잭션

빌드이너프 2023. 1. 12. 10:04

Transaction 트랜잭션

  • 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성
  • 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

Transaction  특성

특성 설명 주요기법
원자성
(Atomicity)
- 분해가 불가능한 작업의 최소단위
- 연산 전체가 성공 또는 실패(All or Nothing)
- 하나라도 실패할 경우 전체가 취소되어야하는 특징
- Commit/Rollback
- 회복성 보장
일관성
(Consistency)
트랜잭션이 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 보존해야하는 특성 - 무결성 제약조건
- 동시성 제어
격리성
(Isolation)
- 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가한 특성 - Read Uncommited
- Read Commited
- Repeatable Read
- Serializable
영속성
(Durability)
성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성 회복기법

ACID 원칙은 완벽히 지켜지지 않음

  • ACID 원칙을 엄격하게 지키려면 동시성이 매우 떨어지기 때문

트랜잭션의 상태 변화

트랜잭션의 상태전이도

상태 설명
활동상태(Active) 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
부분완료 상태
(Partially Committed)
마지막 명령문이 실행된 후에 가지는 상태
완료 상태(Committed) 트랜잭션이 성공적으로 완료된 후 가지는 상태
실패 상태(Failed) 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
철회 상태(Aborted) 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태

트랜잭션 제어

  • 트랜잭션 제어 언어(TCL: Transaction Control Language)
  • 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어

TCL 명령어

명령어 핵심 설명
커밋(COMMIT) 트랜잭션 확정 트랜잭션을 메모리에 영구적으로 저장하는 명령어
롤백(ROLLBACK) 트랜잭션 취소 트랜잭션 내역을 저장 무료화시키는 명령어
체크포인트(CHECKPOINT) 저장 시기 설정 ROLLBACK을 위한 시점을 지정하는 명령어

병행 제어(일관성 주요 기법)

  • 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 ㅇ뉘해 상호작용을 제어하는 기법

병행 제어 목적

  • 데이터베이스 공유 최대화
  • 시스템 활용도 최대화
  • 데이터베이스 일관성 유지
  • 사용자에 대한 응답시간 최소화

병행 제어 미보장시 문제점

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

병행 제어 기법 종류

기법 설명
로킹
(Locking)
- 같은 자원을 엑세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 작아지면 데이터베이스 공유도 증가
- 로킹 단위가 작아지면 로킹 오버헤드 증가
- 로킹 단위: 한꺼번에 로킹할 수 있는 객체의 크기
낙관적 검증 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
타임 스탬프 순서
(Time Stamp Ordering)
트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
다중버전 동시제어
(MVCC: Muti Version Concurrency Control)
트랜잭션의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

데이터베이스 고립화 수준(격리성 주요  기법)

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

고립화 수준 종류

수준 설명
Read Uncommitted - 한 트랜잭션에서 연산(갱신) 중인(아직 커밋되지 않은) 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준
- 연산(갱신) 중인 데이터에 대한 연산은 불허
Read Committed - 한 트랜잭션에서 연산(갱신)을 수행할 때, 연산이 완료될 때까지 연산 대상 데이터에 대한 읽리를 제한하는 수준
- 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용
Repeatable Read 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한하는 수준
Serializable Read 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준

회복 기법(영속성 주요 기법)

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

회복기법 종류

기법 설명

로그 기반 회복 기법 지연 갱신 회복 기법
(Deferred Update)
트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
즉각 갱신 회복 기법
(Immdiate Update)
트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
체크 포인트 회복 기법
(Checkpoint Recovery)
장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
그림자 페이징 회복 기법
(Shadow Paging Recovery)
데이터베이스 트랜잭션 수행시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법

 

 

 


참고자료

수제비 정보처리기사 실기 7-2 ~ 7-6

소프트웨어 꼰대 강의, 01. 데이터베이스 - 트랜잭션(Transaction) 개념 잡기

'IT > Computer Science' 카테고리의 다른 글

추상 클래스 / 인터페이스  (0) 2023.01.16
Git / GitHub  (1) 2023.01.13
TCP / UDP  (1) 2023.01.11
SOLID 5가지 설계 원칙  (2) 2023.01.10
Design Pattern 디자인 패턴  (1) 2023.01.09