트랜잭션(Transaction)
- 데이터베이스 내에서 한꺼번에 모두 수행되어야 할 연산들의 집합으로 하나의 작업 처리를 위한 논리적 작업 단위를 말한다.
- 트랜잭션 내의 연산은 한꺼번에 완료되어야 하며 그렇지 못한 경우 모두 취소되어야 한다.
트랜잭션의 성질(=ACID 성질)
원자성(Atomicity) | - 트랜잭션의 가장 기본적인 특성으로 트랜잭션 내의 연산은 반드시 모두 수행되어야 하며 그렇지 않은 경우 모두 수행되지 않아야 함. |
일관성(Consistency) | - 트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야하며, 결과에 모순이 생겨서는 안 됨. |
격리성(Isolation) | - 독립성이라고도 하며, 하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근할 수 없고 각각의 트랜잭션은 독립적이어야 함. |
영속성(Durability) | - 지속성이라고도 하며, 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 함. |
트랜잭션 연산
- COMMIT과 ROLLBACK이 있으며 하나의 트랜잭션은 COMMIT이나 ROLLBACK이 되어야 한다.
1) COMMIT
- 트랜잭션이 성공적으로 종료된 후 수정된 내용을 지속적으로 유지하기 위한 연산이다.
ex) 적립카드에 10점의 점수를 적립하는 트랜잭션을 수행해서 정상적으로 종료되는 경우는 다음과 같다.
read(card) -> 카드 인식
A = A + 10 -> 포인트 입력
recognition -> 승인
write(A) -> 포인트 적립
COMMIT -> 정상 종료
2) ROLLBACK
- 트랜잭션이 비정상적으로 수행되었거나 오류가 발생했을 때 수행 작업을 취소하고 이전 상태로 되돌리기 위한 연산이다.
ex) 적립카드에 10점의 점수를 적립하는 트랜잭션을 수행하는 도중 오류가 발생하는 경우는 다음과 같다.
read(card) -> 카드 인식
A = A + 10 -> 포인트 입력
오류
ROLLBACK -> 작업 취소
트랜잭션의 상태도
트랜잭션이 수행되는 과정
실행 | - 현재 실행 중인 상태. |
부분 완료 | - 실행을 모두 마치고, 데이터베이스에 결과를 저장하기 직전 상태. |
완료 | - 트랜잭션의 연산을 정상적으로 마치고, 연산 결과를 데이터베이스에 저장한 상태. |
실패 | - 트랜잭션 실행 중 오류에 의해 더 이상 진행될 수 없는 상태. |
철회 | - 트랜잭션 실행이 실패되어 복귀되는 상태. |
트랜잭션 스케줄(Transaction Schedule)
- 동시에 여러 개의 트랜잭션들이 병행 실행되는 경우 트랜잭션의 연산들이 실행되는 순서를 말하는 것.
- 종류 : 직렬 스케줄(Serial Schedule), 비직렬 스케줄(Nonserial Schedule)
1) 직렬 스케줄(Serial Schedule)
- 각 트랜잭션별로 구분하여 한 트랜잭션을 구성하는 연산들을 연속적으로 모두 실행하고 다른 트랜잭션을 수행하는 방식의 스케줄 기법을 말한다.
2) 비직렬 스케줄(Nonserial Schedule)
- 트랜잭션들을 병행하여 수행하는 방법으로 인터리브 실행 기법을 이용하여 각 트랜잭션의 연산들을 번갈아가면서 병행 실행하는 방법을 말한다.
직렬 가능 스케줄(Serializable Schedule)
- 직렬 스케줄(Serial Schedule) 기법을 이용한 결과와 비직렬 스케줄(Nonserial Schedule) 기법을 이용한 결과가 동일하게 나오는 경우를 말한다.
'정보처리산업기사 실기 > 데이터베이스' 카테고리의 다른 글
인덱스(INDEX) (0) | 2020.11.07 |
---|---|
회복 기법과 병행 제어 (0) | 2020.11.07 |
내장 SQL과 커서(Cursor) (0) | 2020.11.07 |
역정규화 (0) | 2020.11.07 |
정규화(Normalization) (0) | 2020.11.06 |