트랜잭션(transaction) 개념
트랜잭션(transaction)은 다양한 데이터 항목에 접근하고 갱신하는 프로그램 수행의 단위이다.
데이터 무결성을 보존하기 위해서 데이터베이스 시스템은 다음과 같은 트랜잭션 성질을 보장해야 한다.
1. 원자성(atomicity):
트랜잭션의 모든 연산이 정상적으로 수행되거나 아니면 어떠한 연산도 수행되지 않은 원래 상태가 되도록 해야 한다.
-> 복구 시스템(recovery system)
2. 일관성(consistency):
고립 상태에서 트랙잭션 수행이 데이터베이스의 일관성을 보존해야 한다.
3. 고립성(isolation):
여러 트랜잭션이 동시에 수행되더라도, 각 트랜잭션은 다른 트랙잭션이 동시에 수행되고 있는지를 알지 못하는 것과 같아야 한다.
-> 동시성 제어 시스템(concurrency-control system)
4. 지속성(durability):
트랜잭션이 성공적으로 수행 완료되고 나면, 트랜잭션에 의해 변경된 데이터베이스 내용은 시스템에 오류가 발생한다고 하더라도 영구적으로 반영되어야 한다.
-> 복구 시스템(recovery system)
위 특성들은 ACID 특성(ACID property)이라고 불린다.
스케줄(Schedule)
스케줄(schedule)은 동시에 실행중인 트랜잭션들의 명령어가 실행되는 순서이다.
성공적으로 실행을 완료한 트랜잭션은 마지막에 commit 명령어를 가진다.
성공적으로 실행을 완료하지 못한 트랜잭션은 마지막에 abort 명령어를 가진다.
데이터베이스 시스템은 데이터베이스가 항상 일관된 상태에 있게 스케줄링한다.
데이터베이스 시스템의 동시성 제어(concurrency-control) 구성요소가 이 역할을 한다.
직렬 가능성(Serializability)
동시에 트랜잭션을 수행한 스케줄의 결과가 순차적으로 트랜잭션을 수행한 스케줄의 실행 결과와 동일하게 함으로써 데이터베이스의 일관성을 보장할 수 있다.
이런 스케줄을 직렬 가능(serializable) 스케줄이라고 한다.
동일한 결과를 만들어 내는 여러 스케줄의 형태 중 충동 직렬 가능성(conflict serializability)은 다음과 같다.
만일 같은 데이터 항목에 서로 다른 트랜잭션의 연산 I, J가 실행될 때, 그중 적어도 하나는 write 연산일 경우 두 명령어 I, J가 충돌(conflict)한다고 말한다.
이때, 스케줄 S의 충돌하지 않은 명령어들의 순서를 바꾸어 직렬 스케줄 S'와 동등한 스케줄을 만들 수 있다면, 충돌 직렬 가능(conflict serializable)하다고 말한다.
이때, 스케줄 S와 S'는 서로 동등한 스케줄이다.(conflict equivalent)
'전공 > 데이터베이스' 카테고리의 다른 글
복구 시스템 - (1) (0) | 2021.12.06 |
---|---|
트랜잭션 - (2) (0) | 2021.12.06 |
저장 장치 관리 및 인덱싱: 인덱싱 (0) | 2021.11.29 |
저장 장치 관리 및 인덱싱: 데이터 저장 장치 구조 (0) | 2021.11.26 |
저장 장치 관리 및 인덱싱: 물리적 저장 장치 구조 (0) | 2021.11.26 |