트랜잭션
태그 :
- 개념
- 한번에 수행되어야 할 데이터베이스의 일련의 Read와 Write연산을 수행하는 단위, 하나의 논리적 기능을 수행하기 위한 작업의 단위로서 데이터베이스의 일관된 상태를 또 다른 일관 상태로 변화시키는 것
1. 데이터베이스에서 행해지는 논리적인 작업단위, 트랜잭션에 대한 개요
가. 트랜잭션(Transaction)의 정의
- 한번에 수행되어야 할 데이터베이스의 일련의 Read와 Write연산을 수행하는 단위
- 하나의 논리적 기능을 수행하기 위한 작업의 단위로서 데이터베이스의 일관된 상태를 또 다른 일관된 상태로 변환시킴.
- 트랜잭션의 개념도
나. 트랜잭션의 특징(ACID)
특징 |
기본개념 |
Atomicity (원자성) |
- 트랜잭션은 한 개 이상의 동작을 논리적으로 한 개의 작업단위(single unit of work)로서 분해가 불가능한 최소의 단위 - 연산 전체가 성공적으로 처리되거나 또는 한 가지라도 실패할 경우 전체가 취소되어 무결성을 보장(All or Nothing) - Commit/Rollback 연산. [관리 : 트랜잭션관리자] |
Consistency (일관성) |
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 모순 없이 일관성 있는 데이터베이스 상태를 보존함. [관리:무결성제어기] |
Isolation (고립성) |
- 트랜잭션이 실행 중에 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없음. [관리 : 병행제어관리자] |
Durability (영속성) |
- 성공이 완료된 트랜잭션의 결과는 영구(속)적으로 데이터베이스에 저장됨. [관리 : 회복기법, 연관회복관리자]
|
2. 트랜잭션 상태 및 상태설명
가. 트랜잭션 상태 개념도
나. 트랜잭션 상태 설명
구분 |
설명 |
활동(Active) |
초기 상태, 트랜잭션이 실행을 시작하였거나 실행 중인 상태. |
부분완료(Partial Committed) |
마지막 명령문이 실행된 후에 가지는 상태임. 즉, Commit 직전 상태 |
실패(Failed) |
정상적인 실행이 더 이상 진행될 수 없을 때의 상태 즉, 정상적 실행이 중단된 상태 |
철회(Aborted) |
트랜잭션이 실행에 실패하여 취소되고 트랜잭션 시작 전 상태로 환원된 상태. 즉, Rollback연산을 수행한 상태 |
완료(Committed) |
트랜잭션이 성공적으로 완료된 후 Commit연산을 수행한 상태. |
3. Transaction의 3가지 연산
가. 철회된 트랜잭션의 연산
연산 |
설명 |
트랜잭션 재실행 (Restart) |
- 철회된 트랜잭션을 다시 새로운 트랜잭션으로 취급하여 재 시작하는 방법 - 철회된 트랜잭션의 내부적인 논리 오류가 아니라, HW, SW 오류인 경우. |
트랜잭션 폐기 (Kill) |
- 철회된 트랜잭션을 폐기하는 방법 - 트랜잭션의 철회 원인이 트랜잭션의 내부적인 논리 오류가 원인 |
나. 트랜잭션의 정상종료연산
연산 |
설명 |
Commit 연산 |
- Data 변경 내용을 데이터베이스에 저장, 새로운 트랜잭션은 Commit문 다음 시작 가능 |
프로그램 정상 종료 |
- 새로운 트랜잭션은 시작 불가. 변경 내용 저장을 Commit 연산과 동일한 처리 |
다. 트랜잭션의 비정상 종료연산
연산 |
설명 |
Commit 연산 |
- Data 변경 내용을 데이터베이스에 저장, 새로운 트랜잭션은 Commit문 다음 시작 가능 |
Rollback 연산 |
- 해당 트랜잭션을 중지, 폐기하고, 데이터베이스 내용을 Rollback. - 새로운 Transaction은 Rollback문 다음 시작 가능 |
라. 트랜잭션 처리 방법(ANSI/ISO SQL 표준안 )
종류 |
트랜잭션 처리방법 |
Commit 문 |
- 데이터베이스의 변경 내용을 하드디스크에 영구적으로 저장한다 - Commit문 처리방법 |
Rollback 문 |
- 해당 트랜잭션을 중지 또는 폐기(abort)하고, 데이터베이스에 저장된 내용을 철회(rollback) 시킨다 - Rollback문 처리 방법 |
성공적인 프로그램 종료 |
- 마치 commit문이 실행된 것과 동일한 효과를 나타낸다 - commit문과는 달리 프로그램이 종료되기 때문에 새로운 트랜잭션이 시작되지 않는다 - 성공적인 프로그램 종료 방법 |
비정상적인 프로그램 종료 |
- 마치 rollback 문이 실행된 것과 동일한 효과를 나타낸다 - Rollback 문과는 달리 프로그램이 종료되기 때문에 새로운 트랜잭션이 시작되지 않는다 - 비정상적인 프로그램 종료 방법 |
4. Transaction 처리시 고려사항 및 활용
가. Transaction 처리시 고려사항 및 활용
1) 트랜잭션의 동시성 구현: 트랜잭션의 동시 실행은 트랜잭션의 처리율과 시스템 이용률을 높이고, 대기시간을 줄임으로써, 동시성을 높일 수 있음.
2) 트랜잭션 수행시간을 최대한 짧게 수행함
긴 트랜잭션의 경우에는 Locking 수행시간이 길게 됨으로써, 충돌현상 및 Deadlock 발생소지 ->트랜잭션 수행 시간을 짧게 구성 필요.
나. Transaction 활용
1) 용량산정 근거자료로서 이용
테이블의 모든 생성 트랜잭션 수를 파악한 다음 그 테이블에서 연관된 테이블들의 생성 트랜잭션을 분석해 나가면 각 테이블에 저장되는 데이터 량을 유추.
2) 디스크 구성에 이용
각 테이블에 발생하는 트랜잭션의 수가 많을 경우 디스크 I/O의 집중화 현상을 방지하기 위해 데이터베이스의 데이터파일을 여러 디스크에 나누어 설계하고 그에 따라 테이블 스페이스도 여러 디스크에 나누어 설계하는 전략을 세울 수 있음.