
트랜잭션
- 하나의 논리적 기능을 구행하기 위한 작업단위
- 데이터베이스에서 일어나는 연산의 집합
트랜잭션의 특징
🔸 원자성(Atomicity)
- 완전하게 수행이 완료되지 않으면 전혀 수행되지 않아야 한다.
- 연산은 Commit, Rollback을 이용하여 적용 또는 취소로 한꺼번에 완료되어야 한다.
- 중간에 하나의 오류가 발생되더라도 취소가 되어야 한다.
🔸 일관성(Consistency)
- 시스템의 고정 요소는 트랜잭션 수행 전후가 같아야 한다.
🔸 격리성(Isolation, 고립성)
- 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.
🔸 영속성(Durability, 지속성)
- 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억된다.
즉각 갱신법
- 데이터를 갱신하면 트랜잭션이 완료되기 전에 실제 데이터베이스에 반영하는 방법
- 회복 작업을 위해서 갱신 내용을 별도 Log로 기록해야 한다.
- Redo, undo 모두 사용 가능하다.
트랜잭션 연산
- Commit 연산 : 트랜잭션 실행이 성공적으로 종료되었음을 선언
- Rollback 연산 : 트랜잭션 실행이 실패하였음을 선언
- Recovery 연산 : 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이저의 정상적인 상태로 복구시키는 작업
병행제어(Concurrency Control)
- 동시에 수행되는 트랜잭션들을 일관성 있게 처리하기 위해 제어하는 것
목적
- 데이터베이스의 공유를 최대화한다.
- 데이터베이스의 일관성을 최대화한다.
- 시스템 활용도를 최대화한다.
- 사용자에 대한 응답 시간을 최소화한다.
종류
- 로킹, 최적 병행 수행, 타임스탬프, 다중 버전 기법
타임스탬프
- 트랜잭션이 DBMS로부터 유일한 타임스탬프(시간 허가 인증 도장)를 부여받는다.
- 동시성 제어를 위한 직렬화 기법으로 트랜잭션 간의 순서를 미리 정하는 방법
로킹(Locking) 특징
- 로킹 : 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 병행 제어 기법
- 로킹 단위가 커지면 로크의 수가 적어 관리가 쉬어지지만 병행성 수준은 낮아진다.
- 로킹 단위가 작으면 로크의 수가 많아 관리가 어려우지지만 병행성 수준은 높아진다.
- 로킹 단위 : 로킹의 대상이 되는 객체(파일, 테이블, 필드, 레코드)의 크기