안녕하세요, 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)에 대해 알아보았습니다^^
다음 시간에는 다른 개념들을 공부해보도록 하겠습니다.
끝.
'그럴듯한 정보' 카테고리의 다른 글
[투자] ETF 종류별 추천 : 주식, 채권, 원자재 (0) | 2024.03.17 |
---|---|
[투자] ETF 투자하는법, 미국 ETF 추천 (0) | 2024.03.17 |
[IT 기술] DB 데이터베이스 파티셔닝, 샤딩 (0) | 2024.03.16 |
[IT 기술] 데이터베이스 - DDL, DML, DCL이란? (0) | 2024.03.08 |
[IT 기술] GraphQL 의 개념 및 특징 장단점 (0) | 2024.03.04 |