본문 바로가기
  • 適者生存
WorkOut/정보처리기사

SQL 응용 | 데이터베이스 기본_트랜잭션

by lcrvvxln 2024. 4. 4.

 

01 데이터베이스 기본

 

1. 트랜잭션

 

(1) 트랜잭션 (Transaction)

 

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

[1] 트랜잭션의 특성


1. 원자성 (Atomicity)
- 트랜잭션 구성 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질
- 트랜잭션 연산 전체가 성공 또는 실패 (All or Nothing) 되어야 하는 성질

> Commit / Rollback
> 회복성 보장


2. 일관성 (Consistency)
- 시스템 고정요소는 트랜잭션 수행 과 수행 완료상태가 같아야 하는 성질

> 무결성 제약 조건
> 동시성 제어


3. 격리성=고립성 (Isolation)
- 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질

> 고립화 수준 ( 레벨 0, 1, 2, 3)

4. 영속성 (Durability)
- 성공 완료된 트랜잭션 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질

> 회복기법

트랜잭션의 특성

" ACID "

Atomicity
Consistency
Isolation
Durability

 

[2] 트랜잭션의 상태 변화

 

트랜잭션의 상태전이도

 

  • 트랜잭션 상태 설명

1. 활동 상태 (Active)
: 초기 상태, 트랜잭션이 실행 중일 때의 상태

2. 부분 완료 상태 (Partially Commited)
: 마지막 명령문이 실행된 후의 상태

3. 완료 상태 (Commitied)
: 트랜잭션이 성공적으로 완료된 후의 상태

4. 실패 상태 (Failed)
: 정상적 실행이 더 이상 진행될 수 없을 때 가지는 상태

5. 철회 상태 (Aborted)
: 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태 환원된 상태

트랜잭션 상태

활부완실철

활동 / 부분 완료 / 완료 / 실패 / 철회

 

[3] 트랜잭션 제어


- 트랜잭션 제어 언어는 TCL (Transaction Control Language)  >  트랜잭션 결과 허용 / 취소 목적으로 사용되는 언어

  • TCL 명령어

1. 커밋 (COMMIT) - 트랜잭션 확정
: 트랜잭션을 메모리에 영구 저장하는 명령어

2. 롤백 (ROLLBACK) - 트랜잭션 취소
: 트랜잭션 내역을 저장 무효화시키는 명령어

3. 체크포인트 (CHECKPOINT) - 저장 시기 설정
: ROLLBCAK 시점을 지정하는 명령어

TCL 명령어

커롤체

커밋 / 롤백 / 체크포인트

 

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

 

  • 병행 제어 (Concurrency Control) 개념

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

  • 병행 제어 목적

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

  • 병행 제어 기법 종류

1. 로킹 (Locking)
: 하나의 트랜잭션 실행 동안 특정 데이터 항목에 대해 다른 트랜잭션이 동시 접근하지 못하도록 상호배제 (Mutual Exclusion) 기능을 제공하는 기법

- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
- 로킹 단위 작아지면 데이터베이스 공유도 증가 & 로킹 오버헤드 증가
- 한번에 로킹할 수 있는 객체 크기로킹 단위

2. 낙관적 검증 (Optimistic Validation)
: 어떤 검증도 없이 일 트랜잭션을 수행하고, 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

3. 타임 스탬프 순서 (Time Stamp Ordering)
:
트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션 실행 시작 전타임 스탬프 (Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수하는 기법



4. 다중버전 동시성 제어 (MVCC; Multi Version Concurrency Control)
: 트랜잭션 타임스탬프와 접근 데이터 타임스탬프비교하여 직렬가능성이 보장되는 적절한 버전을 선택해서 접근하는 기법

5. 2PC (2 Phase Commit)
: 데이터베이스 동시성 제어 기술 중 하나
여러 개 분산 데이터베이스 시스템에서 트랜잭션 일관성 유지하는 기법

트랜잭션 두 단계로 분리하여 제어

- 1단계 ( 준비 단계 )
> 트랜잭션 수행 결과다른 분산 시스템에 알리는 과정

- 2단계 (커밋 단계)
> 모든 분산 시스템에서 트랜잭션 수행 결과일치하는지 확인모 확인하는 과정
> 모든 분산 시스템이 트랜잭션을 성공적으로 수행했다면, 커밋 수행, 그렇지 않으면 롤백 수행

 

병행 제어 기법

로 낙타다2

로킹
낙관적 검증
타임 스탬프 순서
다중버전 동시성
2PC

 

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

 

  • 고립화 수준 (Isolation Level) 개념

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

  • 고립화 수준 종류

1. Read Uncommited
- 트랜잭션에서 연산(갱신) 중인 (아직 커밋되지 않은) 데이터다른 트랜잭션이 '읽는 것'을 허용하는 수준
- 연산(갱신) 중인 데이터에 대한 연산은 불허

2. Read Commited
- 한 트랜잭션에서 연산(갱신)을 수행할 때, 연산 '완료 시'까지 연산 대상 데이터에 대한 읽기를 제한하는 수준
- 연산 완료되어 커밋된 데이터다른 트랜잭션이 읽는 것을 허용

3. Repeatable Read
-
선행 트랜잭션
특정 데이터 읽을 때, 트랜잭션 '종료 시'까지 해당 데이터에 대한 갱신/삭제 제한하는 수준

4. Serializable Read
- 선행 트랜잭션특정 데이터 영역순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준

[7] 회복 기법 (영속성 주요 기법)

 

  • 회복 기법 (Recovery) 개념

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

  • 데이터베이스 회복 주요 요소

1. REDO
- 데이터베이스가 비정상 종료되었을 때, 디스크 저장 로그 분석하여 트랜잭션 시작(Start)완료(Commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
- 데이터베이스 내용 자체손상된 경우, 가장 최근의 복사본 적재이후 일어난 변경만을 로그를 이용하여 재실행하여 데이터베이스 복원하는 기법



2. UNDO
- 데이터베이스가 비정상 종료되었을 때, 디스크 저장 로그 분석하여 트랜잭션 시작(Start)은 있으나 완료(Commit) 기록이 없는 트랜잭션들이 작업한 변경 내용 모두 취소하는 기법
- 데이터베이스 내용 자체는 손상되지 않았지만, 경 중이거나 변경 내용에 대한 신뢰성을 잃은 경우, 모든 변경 내용을 취소하여 복원하는 기법

  • 회복 기법 종류

1. 로그 기반 회복 기법

- 지연 갱신 회복 기법 (Deferred Update)
: 트랜잭션 완료 전까지 데이터베이스에 기록하지 않는 기법

- 즉각 갱신 회복 기법 (Immediate Update)
: 트랜잭션 수행 중 갱신 결과바로 DB에 반영하는
기법


2. 체크 포인트 회복 기법 (Checkpoint Recovery)
- 장애 발생검사점 이후 처리된 트랜잭션에 대해서만 장애 발생 이전 상태로 복원시키는 회복 기법

3. 그림자 페이징 회복 기법 (Shadow Paging Recovery)
- 데이터베이스 트랜잭션 수행복제본 생성하여 데이터베이스 장애 시 이를 이용해 복구
하는 기법

회복 기법 종류

회로체그

복기법
그 기반 회복 기법 / 크 포인트 회복 기법 / 림자 페이징 회복 기법
(지연 갱신 회복 기법 & 즉각 갱신 회복 기법)

> 무전기의 회로를 체크하자