병행 제어
다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 일관성을 유지하기 위해 제어하는 기법이다.
병행 제어의 목적
- 데이터베이스 공유 최대화
- 시스템 활용도 최대화
- 데이터베이스 일관성 유지
- 사용자 응답시간 최소화
병행 제어 미보장 시 문제점
갱신손실 ( Lost Update ) |
먼저 실행된 트랜잭션 결과를 이후 실행된 트랜잭션이 덮어쓸 때 발생하는 오류 |
현황 파악 오류 ( Dirty Read ) |
트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류 |
모순성 ( Inconsistency ) |
트랜잭션이 동시에 실행되어 데이터 베이스 일관성이 결여되는 오류 |
연쇄복귀 ( Cascading Rollback ) |
다수의 트랜잭션이 데이터 공유 시 다른 트랜잭션 처리취소할 경우 트랜잭션 처리한 곳의 부분을 취소를 못하는 오류 |
병행 제어 기법의 종류
로킹 ( Locking ) |
트랜잭션을 실행하는 동안 특정 데이터 항목을 동시에 접근하지 못하도록 상호배제( Mutual Exclusion ) 기능을 제공 하는 기법 - 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음 - 로킹 단위가 작아지면 데이터베이스 공유도가 증가 - 로킹 단위가 작아지면 로킹 오버헤드가 증가 - 로킹 할 수 있는 객체의 크기를 로킹 단위라고 함 |
낙관적 검증 ( Optimistic Validation ) |
어떠한 검증도 수행하지 않고 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법 |
타임 스탬프 순서 ( Time Stamp Ordering ) |
트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 타임스탬프를 트랜잭션 실행 전에 부여해서 부여된 시간에 따라 작업을 수행하는 기법 |
다중버전 동시성 제어 ( MVCC; Muti Version Concurrency Control ) |
트랜잭션의 타임 스탬프와 접근하려는 데이터의 타임 스탬프를 비교, 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하는 기법 |
데이터베이스 고립화 수준
고립화 수준은 다른 트랜잭션이 현재 데이터에 대한 무결성을 해치지 않게 잠금을 설정하는 정도이다.
고립화 수준 종류
Read Uncommitted | 트랜잭션 연산중인 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준 연산중인 데이터에 대한 연산은 불허 |
Read Committed | 트랜잭션 연산중에 연산이 완료될 때 까지 연산 대상 데이터 읽기를 제한하는 수준 연산이 완료되어 커밋된 데이터는 읽는 것을 허용 |
Repeatable Read | 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 데이터에 대한 갱신, 삭제를 제한하는 수준 |
Serializable Read | 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 데이터 영역 전체에 대한 접근 제한하는 수준 |
회복 기법
트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
회복 기법 주요요소
REDO | - 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 통해 트랜잭션 시작과 완료 기록이 있는 트랜잭션을 재작업하는 기법 - 데이터베이스 내용 자체가 손상된 경우, 가장 최근 복제본을 적재한 후 이 후 일어난 변경 로그를 이용하여 재실행해서 복원하는 기법 |
UNDO | - 데이터베이스가 비정상적으로 종료되었을 때 디크스에 저장된 로그를 통해 트랜잭션 시작은 있지만 완료가 없는 트랜잭션 변경 내용을 모두 취소하는 기법 - 데이터베이스 내용 자체는 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버려 모든 변경 내용을 취소하여 복원하는 기법 |
회복 기법 종류
로그 기반 회복 기법 |
- 지연 갱신 회복 기법 ( Deferred Update ): 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법 - 즉각 갱신 회복 기업 ( Immediate Update ): 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법 |
체크 포인트 회복 기법 ( Checkpoint Recovery) |
장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원 시키는 회복 기법 |
그림자 페이징 회복 기법 ( Shadow Paging Recovery ) |
데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법 |
728x90
'정보처리기사 > SQL 응용' 카테고리의 다른 글
[SQL응용] 트랜잭션 ( PART 1 ) (0) | 2023.07.01 |
---|
댓글