close
[IT 기술] 데이터베이스 트랜잭션(Transaction)이란?
본문 바로가기
그럴듯한 정보

[IT 기술] 데이터베이스 트랜잭션(Transaction)이란?

by SweetFist 2024. 3. 16.
반응형

안녕하세요, SweetFist 입니다.

 

오늘은 데이터베이스 기본 용어 중 트랜잭션(Transaction)에 대해서 설명을 드리려고 합니다.

 

1. 트랜잭션(Tracnsaction)의 정의

- 한번에 수행되어야 할 데이터베이스의 일련의 Read와 Write 연산을 수행하는 단위입니다.

- 하나의 논리적 기능을 수행하기 위한 작업의 단위로서 데이터베이스의 일관된 상태를 또 다른 일관된 상태로 변환시킵니다.

 

2. 트랜잭션의 특징(ACID)

1) Atomicity (원자성)

- 트랜잭션은 한 개 이상의 동작을 논리적으로 한 개의 작업단위 (single unit of work)로서 분해가 불가능한 최소의 단위입니다.

- 연산 전체가 성공적으로 처리되거나 또는 한 가지라도 실패할 경우 전체가 취소되어 무결성을 보장(All or Nothing)합니다.

 

ex) Commit/Rollback 연산

 

2) Consistency (일관성)

- 트랜잭션이 실행을 성공적으로 완료하면 언제나 모순 없이 일관성 있는 데이터베이스 상태를 보존합니다.

- 반복적인 수행 결과가 동일한 환경에서는 동일한 결과를 얻는 성질입니다.

 

3) Isolation (고립성)

- 트랜잭션이 실행 중에 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없습니다.

- 팬텀충돌(Phantom Conflict)현상 → 트랜젝션 Isolation을 제공합니다.

 

4) Durability (영속성)

- 성공이 완료된 트랜잭션의 결과는 영구(속)적으로 데이터베이스에 저장됩니다.

 

3. 트랜잭션 상태 개념도

 

<트랜잭션 상태 개념도>

 

- 활동(Active) : 초기 상태, 트랜잭션이 실행을 시작하였거나 실행 중인 상태

- 부분완료(Partial Committed) : 마지막 명령문이 실행된 후에 가지는 상태임 즉, Commit 직전 상태

- 실패(Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때의 상태 즉, 정상적 실행이 중단된 상태

- 철회(Aborted) :  트랜잭션이 실행에 실패하여 취소되고 트랜잭션 시작 전 상태로 환원된 상태. 즉, Rollback연산을 수행한 상태

- 완료(Committed) : 트랜잭션이 성공적으로 완료된 후 Commit 연산을 수행한 상태

 

4. 트랜잭션의 3가지 연산 및 처리 방법

1) 철회된 트랜잭션의 연산

- 트랜잭션 재실행 (Restart) : 철회된 트랜잭션을 다시 새로운 트랜잭션으로 취급하여 재시작하는 방법

- 트랜잭션 폐기 (Kill) : 철회된 트랜잭션을 폐기하는 방법, 트랜잭션의 철회 원인이 트랜잭션의 내부적인 논리 오류가 원인

 

2) 트랜잭션의 정상 종료 연산

- Commit 연산 : Data 변경 내용을 데이터베이스에 저장, 새로운 트랜잭션은 Commit문 다음 시작 가능

- 프로그램 정상 종료 : 새로운 트랜잭션은 시작 불가. 변경 내용 저장을 Commit 연산과 동일한 처리

 

3) 트랜잭션의 비정상 종료 연산

- Commit 연산 : Data 변경 내용을 데이터베이스에 저장, 새로운 트랜잭션은 Commit문 다음 시작 가능

- Rollback 연산 : 해당 트랜잭션을 중지, 폐기하고, 데이터베이스 내용을 Rollback - 새로운 Transaction은 Rollback문 다음 시작 가능

 

4) 트랜잭션 처리방법(ANSI, ISO SQL 표준안)

- Commit 문 : 데이터베이스의 변경 내용을 하드디스크에 영구적으로 저장 - Commit문 처리방법

 

5. 트랜잭션 처리 시 고려사항

- 트랜잭션의 동시성 구현 트랜잭션의 동시 실행은 트랜잭션의 처리율과 시스템 이용률을 높이고, 대기시간을 줄임으로써, 동시성을 높일 수 있습니다.

 

- 트랜잭션 수행시간을 최대한 짧게 수행함 긴 트랜잭션의 경우에는 Locking 수행시간이 길게 됩니다.

 

6. 트랜잭션 활용방안

- 용량산정 근거자료로서 이용 테이블의 모든 생성 트랜잭션 수를 파악한 다음 그 테이블에서 연관된 테이블들의 생성 트랜잭션을 분석해 나가면 각 테이블에 저장되는 데이터 량을 유추할 수 있습니다.

 

- 디스크 구성에 이용 각 테이블에 발생하는 트랜잭션의 수가 많을 경우 디스크 I/O의 집중화 현상을 방지하기 위해 데이터베이스의 데이터파일을 여러 디스크에 나누어 설계하고 그에 따라 테이블 스페이스도 여러 디스크에 나누어 설계하는 전략을 세울 수 있습니다.


데이터베이스 중 트랜잭션(Transaction)에 대해 알아보았습니다^^

다음 시간에는 다른 개념들을 공부해보도록 하겠습니다.


 

끝.