2. DBMS이야기/01. PostgreSQL

[PostgreSQL] PostgreSQL 에서의 Transaction 종류2

OSSW(Open Source System SoftWare 2014. 7. 2. 10:51

 

1. 트랜잭션 시스템 구조

  • PostgreSQL 의 트랜잭션 시스템은 3개의 Layer 로 구성되어 있음
  • 상단 레이어는 사용자가 SQL 명령어를 통해서 시스템의 상태를 변경할 수 있게 됨
  • 중단 레이어는 개별 쿼리를 프로세싱하는 전과 후를 담당함
  • 하단 레이어는 로우레벨 트랜잭션과 서브 트랜잭션으로 구현함

 

  • 상단 레이어

- BEGIN : Begin Transaction Block

- COMMIT : End Transaction Block

- ROLLBACK : User Abort Transaction Block

- SAVEPOINT : Define Savepoint

- ROLLBACK TO : Rollback To Savepoint

- RELEASE : Release Savepoint

 

  • 중단 레이어의 상태 단계

- Start Transaction Command

- Commit Transaction Command

- Abort Current Transaction

 

  • 하단 레이어에서 실제로 호출되는 함수들

- Start Transaction

- Commit Transaction

- Abort Transaction

- Cleanup Transaction

- StartSub Transaction

- CommitSub Transaction

- AbortSub Transaction

- CleanupSub Transaction

- Command Counter Increment

 

2. 트랜잭션의 취소

  • 트랜잭션의 취소는 "SYSTEM DOWN", "USER ROLLBACK" 에 의해 일어날 수 있다.

- 시스템 다운의 경우에는 중단 레이어의 Abort Current Transaction 이 처리한다.

- 사용자 롤백의 경우에는 상단 레이어의 User Abort Transaction Bolck 이 처리한다.

- 위의 2가지 경우 모두 실제 처리는 하단 레이어의 Abort Transaction 함수를 통해서 처리한다.

- Abort Current Transaction 은 TBLOCK_ABORT 상태 (ROLLBACK 을 기다리는 상태, 다시 실패할 가능성이 있음) 이다.

- User Abort Transaction Bolck 은 TBLOCK_ABORT_END 상태 (ROLLBACK 을 받은 상태, 자원을 정리하기만 하면 됨) 이다.

- 실제로 Transaction 을 취소하는 단계는 Abort Transaction 과 Cleanup Transaction 함수 호출을 통해서 일어난다.

- Abort Transaction 은 Lock 된 모든 공유 자원을 해제해서, 불 필요한 다른 지연이 발생하지 않게 한다.

- Cleanup Transaction 은 사용자가 Commit 이나 Rollback 명령을 실행 했을때 동작하며, 트랜잭션에 관련된 자원들을 정리한다.

 

출처 : http://arisu1000.tistory.com

 

By. 백준

 

'2. DBMS이야기 > 01. PostgreSQL' 카테고리의 다른 글

PostgreSQL Privileges Part.3  (0) 2014.07.09
[Admin] 3.Server Configuration : Parameter 변경  (0) 2014.07.04
PostgreSQL Privileges Part.2  (0) 2014.06.30
Hot Backup  (0) 2014.06.29
PPAS Drita(성능 분석 툴) 설정 방법  (0) 2014.06.27