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 |