정보처리산업기사 실기/데이터베이스

트랜잭션(Transaction)

미웡할꺼야 2020. 11. 7. 17:05

트랜잭션(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)

- 각 트랜잭션별로 구분하여 한 트랜잭션을 구성하는 연산들을 연속적으로 모두 실행하고 다른 트랜잭션을 수행하는 방식의 스케줄 기법을 말한다.

직렬 스케줄(Serial Schedule)

 

2) 비직렬 스케줄(Nonserial Schedule)

- 트랜잭션들을 병행하여 수행하는 방법으로 인터리브 실행 기법을 이용하여 각 트랜잭션의 연산들을 번갈아가면서 병행 실행하는 방법을 말한다.

병렬 스케줄(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