[정처기] 7과목 SQL 응용 트랜잭션 총정리
수제비 2022 정보처리기사 실기 교재 개념 정리한 내용입니다.
트랜잭션
: 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야하는 특성, 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
트랜잭션의 상태 변화
- 활동상태(active) : 초기 상태, 트랜잭션이 실행 중일 때
- 부분 완료 상태(partially commited) : 마지막 명령문이 실행된 후
- 완료 상태(commited) : 트랜잭션이 성공적으로 완료
- 실패 상태(failed) : 정상적인 실행이 더 이상 진행될 수 없을 때
- 철회 상태(aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전으로 환원된 상태
트랜잭션 특성(ACID)
1. 원자성(atomicity)
: 트랜잭션의 연산이 모두 실행되거나 모두 실행되지 않아야하는 특성 → commit/rollback, 회복성 보장
2. 일관성(consistency)
: 시스템의 고정요소는 트랜잭션이 실행되기 전과 후에 변함없이 동일하다는 성질
병행제어(concurrency control; 일관성 주요 기법)
: 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
목적
- 데이터베이스의 공유 최대화
- 시스템의 활용도를 최대화
- 데이터베이스의 일관성 유지
- 사용자 응답시간 최소화
병행제어 미보장시 문제점(갱현아 모연나)
- 갱신 손실(lost update)
: 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
- 현황 파악오류(dirty read)
: 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
- 모순성(inconsistency)
: 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
- 연쇄 복귀(cascading rollback)
: 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류
병행 제어 기법의 종류(로~ 낙타다)
- 로킹(locking)
: 같은 자원을 엑세스하는 다중 트랜잭션 환경, 트랜잭션이 사용하는 데이터 항목에 대해 lock한 트랜잭션이 unlock하기 전까지 독점적으로 사용할 수 있도록 하는 상호배제 기능을 제공하는 병행 제어 기법, 같은 자원을 액세스하는 다중 트랜잭션 ᅟᅪᆫ경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 낙관적 검증 (optimistic validation)
: 일단 트랜잭션을 수행하고 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
- 타임 스탬프 순서(time stamp ordering)
: 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여, 부여된 시간에 따라 트랜잭션 작업을 수행
- 다중버전 동시성 제어(MVCC; multi version concurrency control)
: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교, 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록
3. 격리성(=고립성, isolation)
: 동시에 실행되는 트랜잭션들이 서로 영향을 끼치지 않아야한다는 특징
데이터베이스 고립화 수준(격리성 주요 기법)
: 고립화 수준(isolation level)은 다른 트랜잭션이 현재 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도
- read umcommited
: 한 트랜잭션에서 연산중인 데이터를 다른 트랜잭션이 읽는 것 허용(단, 연산중인 데이터에 대해 연산은 불허)
- read commited
: 연산이 완료되어 커밋된 데이터 다른 트랜잭션이 읽는 것 허용
- repeatable read
: 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한
- serializable read
: 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한
4. 지속성(=영속성, durability)
: 성공이 완료된 트랜잭션의 결과는 데이터베이스에 영속적으로 저장되어야한다는 특징
회복기법(영속성 주요 기법)
: 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
4-1. 로그 기반 회복 기법
4-1-1. 지연 갱신 회복 기법(deferred update)
: 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
4-1-2. 즉각 갱신 회복 기법(immediate update)
: 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
4-2. 체크 포인트 회복 기법(checkpoint recovery)
: 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 되돌리는 회복기법
4-3. 그림자 페이징 회복 기법(shadow paging recovery)
: 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법