트랜잭션의 특성 ACID
Atomicity = All or nothing 완벽히 실행되거나 아예 실행되지 않거나
Consistency = 하나의 트랜잭션이 실행되고 나서 언제나 일관성 있는 데이터베이스 상태로 변환해야 한다.
Isolation = 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
Duarability = 트랜잭션이 실행을 성공적으로 완료하면 그 결과는 영속적이어야 한다.
트랜잭션 연산
COMMIT 연산
ROLLBACK 연산
데이터베이스 장애의 유형
실행장애 = 응용 프로그램 내에 코드로 명시되어 있는 경우로서 ROLLBACK과 같은 연산의 명시로 인한 종료.
트랜잭션 장애 = 계획되지 않은 비정상적 종료(Overflow등)
시스템 장애 = cpu..
미디어 장애 = 디스크 헤드의 붕괴와 같이 데이터베이스와 그와 관련된 모든 것에 손상을 주는 장애.
중복 저장 기법
- DBMS는 데이터베이스에 포함된 정보를 시스템 내에 별도로 중복 저장해두었다가 장애 발생 시 이 정보를 이용하여 회복시킨다.
데이터 자체를 그대로 복사해 복사본 = 덤프(Dump) / 데이터베이스가 변경될 때마다 변경되는 데이터 항복의 이전 값과 이후 값을 별도로 기록 = 로그(Log)
회복의 원리
Redo(재수행) = commit후 시스템 붕괴하면 재수행.
Undo(취소) = commit전 시스템 붕괴하면 취소.
회복기법의 종료
즉시 갱선(Immediate Update) = 트랜잭션이 연산을 실행하고 있는 활동 상태에서 데이터의 변경 결과를 데이터베이스에 즉시 반영한다.
지연 갱신(Deferred Modification) = No Un-do / 로그만 삭제하면 끝남.
검사시점(Check Point) 회복 = 검사 시점 이전에는 모두 검사 완료된 것이기 때문에 그 이후만 보면 된다.
그림자 페이징
Dump를 이용한 데이터 백업 기법.
병행 제어(Concurrency Control)
병행 수행의 문제점
- 갱신분실(Lost Update) = 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신결과의 일부가 분실되는 현상이다.
- 비완료 의존성(Uncommitted Dependency) = 하나의 트랜잭션 수행이 실패한 후 회복되기 전에
다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상.(Dirty Read)
- 모순성(Inconsistency) = 두 개의 트랜잭션 수행이 끝났지만, 원치 않는 연산 결과가 나타나고 데이터베이스 자체도 모순된 상태로 남게 된 현상이다.
- 연쇄 복귀(Cascading Rollback) = 병행 수행되던 트랜잭션들의 하나에 문제가 생겨 Rollback하는 다른 트랜잭션도 함께 Rollback되는 현상이다.
병행 제어의 정의
여러 사용자가 동시에 데이터베이스에 접근하면 많은 트랜잭션들이 발생하는데, 동시에 실행되는 트랜잭션들을 일관성 있게 처리하기 위해
트랜잭션간 상호작용을 제어하는 것.
스케줄
- 직렬 스케줄(Serial Schedule) = 트랜잭션의 연산을 모두 순차적으로 실행하는 유형.
- 비직렬 스케줄(nonserial Schedule) = 트랜잭션 직렬 수행순서와 상관없이 병행 수행하는 스케줄, 인터리빙 방식으로 처리.
병행 제어 기법
- 로킹(Locking) = 비관적 방법, 문제점은 deadlock(교착 상태)이 걸린다.
2단계 로킹(2PL : Two-Phase Locking) = 1. 성장 단계(Growing Phase) = Lock 2. 축소 단계(Shrinking Phase) = Unlock
전용 로크(Exclusive Lock) = read, write OK
공용 로크(Shared Lock) = read 0K write NO
- 타임스탬프(Time Stamp) = 낙관적 방법, 시간 대기표를 주어서 관리.
'정보처리기사 > Database' 카테고리의 다른 글
정처기 수준에서의 데이터베이스 - 튜닝, 객체 지향 데이터베이스, 고급 데이터베이스 (0) | 2018.10.05 |
---|---|
정처기 수준에서의 데이터베이스 - 데이터베이스 고급 기능 (0) | 2018.10.04 |
정처기 수준에서의 데이터베이스 - SQL(DML) (0) | 2018.10.04 |
정처기 수준에서의 데이터베이스 - SQL(DDL, DCL) (0) | 2018.10.04 |
정처기 수준에서의 데이터베이스 - 관계 데이터 연산 (0) | 2018.10.04 |