트랜잭션의 개념
1. 트랜잭션이란, **데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위**를 뜻합니다.
2. 하나의 트랜잭션은 Commit되거나 Rollback됩니다.
트랜잭션의 특징 (ACID)
- 원자성 (Atomicity): 트랜잭션 내 모든 작업은 완전히 수행되거나 전혀 수행되지 않습니다.
- 일관성 (Consistency): 트랜잭션이 완료된 후에도 모든 데이터베이스 규칙과 제약 조건이 충족되어야 합니다.
- 독립성 (Isolation): 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 서로 영향을 주지 않아야 합니다.
- 지속성 (Durability): 커밋된 트랜잭션의 결과는 영구적으로 보존됩니다.
트랜잭션 연산
Commit
- 커밋은 트랜잭션에 의해 수행된 모든 변경사항을 데이터베이스에 영구적으로 저장하는 과정입니다.
- 트랜잭션이 성공적으로 완료되었을 때 수행되며, 이로 인해 트랜잭션 동안 수행된 모든 작업이 확정되고 데이터베이스에 반영됩니다.
- 커밋 후에는 변경사항을 되돌릴 수 없습니다.
Rollback
- 롤백은 트랜잭션 동안 발생한 모든 변경사항을 취소하고, 트랜잭션 실행 이전의 상태로 데이터베이스를 되돌리는 과정입니다.
- 오류가 발생했거나 데이터가 잘못 변경될 가능성이 있는 경우에 주로 수행됩니다.
- 롤백을 통해 트랜잭션 전의 안정적인 상태로 데이터베이스를 복원할 수 있습니다.
트랜잭션 상태
- 활성(Active): 트랜잭션이 실행 중이며, 관련 작업들이 진행되고 있는 상태입니다.
- 부분완료(Partially Committed): 모든 SQL 명령이 실행되고, 트랜잭션을 완료하기 위한 Commit 명령만 남은 상태입니다.
- 완료(Committed): 트랜잭션이 성공적으로 마무리되고, 모든 변경 사항이 데이터베이스에 반영된 상태입니다.
- 실패(Failed): 트랜잭션 중 문제가 발생하여 정상적으로 진행될 수 없게 된 상태입니다.
- 철회(Aborted): 트랜잭션이 취소되어 모든 변경 사항이 되돌려진 상태입니다.
💡트랜잭션 사용시 유의사항
- 트랜잭션은 필요한 최소의 코드에만 적용하는 것이 좋습니다. (범위는 최소화)