본문 바로가기

Archived(IT)/배경지식_CSE

트랜잭션과 스케줄

1. 트랜잭션(Transaction)

데이터베이스에서의 논리적 작업 단위를 트랜잭션이라고 표현한다.

트랜잭션은 Commit 과 Rollback 단위로 끊길 수 있는 작업 단위이다.

 

이러한 트랜잭션은 ACID의 특성을 지니고 있는데 다음과 같다.

(A - atomicity, C - consistency, I - Isolation, D - durability) 

  • 원자성(Atomicity) : 트랜잭션 수행은 다 되던지 안되던지(부분적 수행 불가, Commit/Rollback)
  • 일관성(Consistency) : 트랜잭션 수행은 DB를 일관적 상태에서 다른 일관적 상태로 옮기는 것
  • 격리성(Isolation) : 트랜잭션이 동시에 수행되더라도 혼자서 수행한 것처럼(끼어들 수 없다, LOCK)
  • 지속성(Durability) : 트랜잭션 수행 후 바뀐 상태는 트랜잭션에 의해 변경되지 않는 한 보존되야 함(Backup & recovery)

2. 트랜잭션 스케줄(Transaction Schedule)

트랜잭션은 다수의 DB 사용자에 의해 동시적으로 명령할 때가 있는데 이러한 동시성을 제어해야 한다.

그렇지 않게 되면 3가지의 이상 상태를 겪을 수 있다.

  • 갱신 손실 : 트랜잭션들 간의 수행에 있어 갱신이 적용되지 않는 이상 상태
  • 모순성 : 트랜잭션들 간의 수행에 있어 서로 다른 값을 가르키게 되는 이상 상태
  • 연쇄 복귀 : 트랜잭션들이 서로 롤백을 하는 과정에 있어 어디로 돌아가야 하는지 구분이 안가는 이상 상태

즉, 이러한 이상 상태들을 방지하고자 스케줄을 통해 트랜잭션의 작업 순서를 명확히 한다.

직렬 스케줄은 트랜잭션을 들어온 순서별로 순차적으로 시행하는 스케줄링 방식이다. 즉, 시행하고 있는 트랜잭션이 완료되기 전까지 수행할 수 없다.

비직렬 스케줄은 트랜잭션을 병행적으로 시행한다.

직렬 가능 스케줄은 서로 영향을 주지 않는 트랜잭션들에 한해 비직렬 스케줄링처럼 시행한다.

 

이 때, 락킹 기법을 통해 특정 연산에 앞서 lock을 걸어 해당 트랜잭션의 연산만 수행될 수 있도록 처리해주기도 한다.

'Archived(IT) > 배경지식_CSE' 카테고리의 다른 글

STL 라이브러리_ 자료형  (0) 2019.11.17
애자일(Agile) 방법론  (0) 2019.11.04
TCP / UDP  (0) 2019.11.04
메모리 단편화(페이징, 세그먼테이션)  (0) 2019.11.01
정렬 알고리즘  (0) 2019.11.01