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)
- 데이터베이스 트랜잭션 수행 시 복제본 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법
회복 기법 종류
회로체그
회복기법
로그 기반 회복 기법 / 체크 포인트 회복 기법 / 그림자 페이징 회복 기법
(지연 갱신 회복 기법 & 즉각 갱신 회복 기법)
> 무전기의 회로를 체크하자
'WorkOut > 정보처리기사' 카테고리의 다른 글
데이터베이스 | 트랜잭션 (DML&DCL) + Join (0) | 2024.04.07 |
---|---|
SQL 응용 | 데이터베이스 기본 _DDL (2) | 2024.04.04 |
파이썬 | 함수와 클래스 (4) | 2024.03.29 |
파이썬 | 입출력 함수와 연산자, 반복문 (0) | 2024.03.26 |
파이썬 | 기본 구조와 자료형 (0) | 2024.03.26 |