IT Memory Note

[정보처리기사] SQL 응용 : 데이터베이스 기본(1) 본문

자격증/정보처리기사

[정보처리기사] SQL 응용 : 데이터베이스 기본(1)

h00ddu 2024. 8. 18. 07:32

 

1️⃣ 트랜잭션(Transaction)

 


(1) 트랜잭션

 

1. 트랜잭션의 개념

 

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

2. 트랜잭션의 특성

 

특성 설명 주요 기법
원자성
(Atomicity)
트랜잭션을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질
트랜잭션의 연산 전체가 성공 또는 실패(All or Nothing)되어야 하는 성질
Commit/Rollback, 회복성 보장
일관성
(Consistency)
시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 하는 성질 무결성 제약조건,
동시성 제어
격리성 = 고립성
(Isolation)
동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질 고립화 수준(레벨 0, 1, 2, 3)
영속성
(Durability)
성공이 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 하는 성질 회복기법

 


3. 트랜잭션의 상태 변화

 

트랜잭션의 상태전이도

 

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

 


4. 트랜잭션의 제어

 

  • TCL(Transaction Control Language)이라고 하며, 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어를 지칭함
명령어 핵심 설명
커밋(COMMIT) 트랜잭션 설정 트랜잭션을 메모리에 영구적으로 저장하는 명령어
롤백(ROLLBACK) 트랜잭션 취소 트랜잭션 내역을 저장 무효화시키는 명령어
체크포인트(CHECKPOINT) 저장 시기 설정 ROLLBACK을 위한 시점을 지정하는 명령어

 


5. 병행 제어(Concurrency Control, 일관성 주요 기법)

 

⓵ 병행 제어의 개념

 

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

⓶ 병행 제어의 목적

 

  • DB 공유를 최대화함
  • 시스템 활용도를 최대화함
  • DB의 일관성을 유지함
  • 사용자에 대한 응답시간을 최소화함

⓷ 병행 제어 기법의 종류

 

기법 설명
로킹
(Locking)
하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호 배제(Mutual Exclusion) 기능을 제공하는 기법
 로킹의 특징
 - DB, 파일, 레코드 등은 로킹 단위가 될 수 있음
 - 로킹 단위가 작아지면, DB 공유도와 로킹 오버헤드가 증가
 - 한꺼번에 로킹할 수 있는 객체 크기를 로킹 단위라고 함
낙관적 검증
(Optimistic Validation)
트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 DB에 반영하는 기법
타임 스탬프 순서
(Time Stamp Ordering)
트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
다중버전 동시성 제어
(MVCC, Multi Version
Concurrency Control)
트랜잭션의 타임 스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
2PC
(2 Phase Commit)
DB 동시성 제어 기술 중 하나로, 여러 개의 분산 DB 시스템에서 트랜잭션의 일관성을 유지하기 위한 기법
트랜잭션을 두 단계로 분리하여 제어
 - 1단계(준비 단계) : 트랜잭션 수행 결과를 다른 분산 시스템에 알리는 과정
 - 2단계(커밋 단계) : 모든 분산 시스템에서 트랜잭션 수행 결과가 일치하는지 확인하는 과정
   → 모든 분산 시스템이 트랜잭션을 성공적으로 수행했다면, 커밋을 수행하고, 그렇지 않다면 롤백을 수행

 


6. 데이터베이스 고립화 수준(Isolation Level, 격리성 주요 기법)

 

⓵ 고립화 수준의 개념

 

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

⓶ 고립화 수준의 종류

 

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

 


7. 회복 기법(Recovery, 영속성 주요 기법)

 

⓵ 회복 기법의 개념

 

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

⓶ 회복 기법의 종류

 

< REDO, UNDO의 정의 >

구분 설명
REDO DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(Start)과 완료(Commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
DB 내용 자체가 손상된 경우, 가장 최근의 복제본을 적재한 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 DB를 복원하는 기법
UNDO DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(Start)과 완료(Commit) 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 최소하는 기법
DB 내용 자체는 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우, 모든 변경 내용을 취소하여 복원하는 기법
기법 설명
로그 기반 회복 기법 지연 갱신 회복 기법(Deferred Update) : 트랜잭션이 완료되기 전까지 DB에 기록하지 않는 기법
즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
체크포인트 회복 기법
(Checkpoint Recovery)
장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
그림자 페이징 회복 기법
(Shadow Paging Recovery)
DB 트랜잭션 수행 시 복제본을 생성하여 DB 장애 시 이를 이용해 복구하는 기법