Skip to content

Latest commit

 

History

History
36 lines (27 loc) · 2.73 KB

Transaction.md

File metadata and controls

36 lines (27 loc) · 2.73 KB

Transaction (트랜잭션)

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들

cf) 여기서 작업 단위는 질의어 한 문장이 아니라, 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것이다. ex) select (부모님 P 계좌 잔액 검색, 자식 C 계좌 잔액 검색) -> update (부모님 P 계좌에서 100,000원 인출) -> update (자식 C 계좌에 100,000원 입금) -> select (부모님 P 계좌 잔액 검색, 자식 C 계좌 잔액 검색)

트랜잭션 명령어

(TCL : Transaction Control Language)

COMMIT

  • 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 명령어

ROLLBACK

  • 하나의 트랜잭션 처리가 비정상으로 종료되어 데이터베이스의 일관성이 깨졌을 때 트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산

SAVEPOINT(=CHECKPOINT)

  • 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어

트랜잭션의 조건

1. 원자성 (Atomicity)

  • 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 Commit 되든지 아니면 전혀 반영되지 않도록 Rollback 되어야 한다.
  • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.

2. 일관성 (Consistency)

  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
  • 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전트랜잭션 수행 완료 후의 상태가 같아야 한다.

3. 독립성 (Isolation)

  • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
  • 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.

4. 지속성 (Durability)

  • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

트랜잭션의 특징 : 무정지성

  • 운영체제 장애 등의 서버 장애가 발생하여 그로부터 데이터베이스를 재가동한 때에 장애 직전까지의 커밋 결과를 손실하지 않고 마치는 것이 가능하다.

참고자료 : 정보처리기사 필기 자료, http://wiki.hash.kr/index.php/트랜잭션, https://d2.naver.com/helloworld/407507