트랜잭션(Transaction)
트랜잭션(Transaction)의 정의
- 하나의 논리적 단위를 구성하는 데이터베이스 연산의 묶음(유닛)
- 각 트랜잭션은 하나의 특정 작업으로 시작하여 묶여있는 모든 작업들을 완료해야만 종료됨
- 동시에 여러 트랜잭션이 수행되기 위해서는 데이터베이스의 일관성이 보장되어야하며 이를 위해 트랜잭션 관리 모듈을 활용
트랜잭션 관리 모듈
- 동시성 제어 모듈(Concurrency Control Module): 데이터베이스의 일관성을 유지하기 위해 동시에 수행되는 트랜잭션들 사이의 상호작용을 제어
- 회복 제어 모듈(Recovery Control Module): 데이터베이스의 일관성을 유지하기 위해 업데이트를 하는 동안 시스템 장애에도 데이터베이스의 기존 상태를 유지
트랜잭션 스케줄링
- 여러 트랜잭션이 동시에 수행될 때 효율적으로 처리하기 위해 트랜잭션을 제어하는 기능
- 트랜잭션의 스케줄링이 잘 되지 않는다면 아래의 상태 이상이 발생될 수 있음
- 갱신 손실(Lost Update): 트랜잭션이 진행되는 사이 갱신이 적용되지 않는 이상 상태
- 모순성(Inconsistency): 트랜잭션이 진행되는 사이 같은 연산의 결과가 서로 다른 값을 가르키게 되는 이상 상태
- 연쇄 복귀(Cascading Rollback): 트랜잭션들이 서로 롤백을 하는 과정에서 어디로 돌아가야하는지 구분이 안되는 이상 상태
- 트랜잭션의 스케줄링 방식은 크게 3가지 방법으로 구분
- 직렬 스케줄(Serial Schedule): 트랜잭션 별로 연산을 순차적으로 수행하는 방식
- 비직렬스케줄(Nonserial Schedule): 트랜잭션 연산들을 상호적(Interleaving)으로 수행하는 방식
- 직렬 가능 스케줄(Serializable Schedule): 직렬성을 가진 스케줄, 트랜잭션이 동시에 수행되더라도 동일한 결과를 갖는 방식
(직렬 가능 트랜잭션을 보장하기 위한 프로토콜: 잠금(Locking), 시간표(Timestamp))
트랜잭션 유효성 보장
- 데이터베이스에서 트랜잭션이 수행될 때는 데이터의 유효성(안전성)을 보장되어야 함
- 이를 위해 4가지의 성질을 만족시켜야 하며, 각 성질(요소)의 앞글자를 따서 'ACID'라고 함
- 데이터베이스의 ACID
- 원자성(Atomicity):
하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해서 결과를 예측할 수 있어야함
(여러 작업이 부분적으로 실행된다면, 업데이트가 일어났지만 그 사실을 모르거나, 누락되거나 하는 문제 발생) - 일관성(Consistency)
미리 정의된 규칙에 의해 데이터베이스의 상태가 일관되어야 함
하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 함 - 격리성(Isolation)
모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 함
동시에 여러 개의 트랜잭션들이 수행될 때, 각 트랜잭션은 격리되어 있어, 연속으로 실행된 것과 동일한 결과를 나타냄 - 지속성(Durability)
런타임 오류나, 시스템 오류가 발생하더라도, 해당 기록은 영구적이어야 함
하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그가 남아야 함
- 원자성(Atomicity):
'Database' 카테고리의 다른 글
데이터베이스 관리 시스템(Database Management System) (0) | 2022.06.13 |
---|---|
데이터베이스 기초(Basic of Database) (0) | 2022.06.13 |