본문 바로가기
정보처리기사/SQL 응용

[SQL응용] 트랜잭션 ( PART 2 )

by pcm9881 2023. 7. 1.

병행 제어

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

 

병행 제어의 목적

- 데이터베이스 공유 최대화

- 시스템 활용도 최대화

- 데이터베이스 일관성 유지

- 사용자 응답시간 최소화

 

병행 제어 미보장 시 문제점

 갱신손실
 ( 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

댓글