목록

2019년 2월 17일 일요일

[데이터베이스] 13. 트랜잭션이란? (트랜잭션의 정의, 특성)






1. 트랜잭션의 정의

  • 사용자가 제기한 데이터베이스의 작업 수행을 위한 데이터 조작의 집단
  • 하나의 트랜잭션은 Commit 되거나 Rollback 된다.
  • 트랜잭션은 일반적으로 병행수행 제어 및 회복의 기본 단위가 된다.



2. 트랜잭션의 특성


2-1. 원자성(Atomicity)
  • 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
  • 즉, 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 에러가 발생하면 트랜잭션 전부가 취소되어야 한다.



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



2-3. 독립성, 격리성(Isolation)
  • 둘 이상의 트랜잭션이 동시에 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
  • 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.



2-4. 영속성, 지속성(Durability)
  • 성공적으로 완료된 트랜잭션의 결과는 영구적으로 유지되어야 한다.




3. 트랜잭션의 원자성을 위한 연산

  • COMMIT
- 트랜잭션의 성공적인 종료로 데이터베이스가 다시 일관된 상태에 있을 때 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다.
- COMMIT이 성공적으로 이루어지면 데이터베이스에 대한 갱신 작업이 영구적으로 반영된다.
- 명시적 COMMIT(Explicit Commit) : 데이터베이스 사용자가 COMMIT 명령을 직접 사용.
- 암시적 COMMIT(Implicit Commit) : DBMS가 사용자 session 종료 시 자동으로 COMMIT.

  • ROLLBACK
- 트랜잭션의 비정상적인 종료로 데이터베이스이 비일관적인 상태에 놓였을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소시키는 연산이다.



4. 트랜잭션의 상태

  • 활동(Active) : 트랜잭션이 실행 중에 있는 상태.
  • 장애(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태.
  • 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태.
  • 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, COMMIT 연산이 실행되기 직전의 상태.
  • 완료(Committed) : 트랜잭션이 성공적으로 종료되어 COMMIT 연산을 실행한 후의 상태.





댓글 없음:

댓글 쓰기