Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- webhacking
- 자격증공부
- reivew
- 보안
- 정보처리기사
- 웹해킹
- keyword
- 케이쉴드주니어
- wargame
- 클라우드
- 보안용어
- 위험관리
- study
- Security
- Review
- it자격증
- 워게임
- 복습
- DreamHack
- 공부
- Shell
- 정리
- IT
- 리눅스
- 기록
- Linux
- 취약점진단
- 드림핵
- 자격증
- 리눅스마스터2급
Archives
- Today
- Total
IT Memory Note
[정보처리기사] SQL 응용 : 데이터베이스 기본(1) 본문
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 장애 시 이를 이용해 복구하는 기법 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] SQL 응용 : 데이터베이스 기본(3) (1) | 2024.08.20 |
---|---|
[정보처리기사] SQL 응용 : 데이터베이스 기본(2) (0) | 2024.08.20 |
[정보처리기사] 프로그래밍 언어 활용 : 파이썬(3) (0) | 2024.08.14 |
[정보처리기사] 프로그래밍 언어 활용 : 파이썬(2) (0) | 2024.08.14 |
[정보처리기사] 프로그래밍 언어 활용 : 파이썬(1) (1) | 2024.08.14 |