트랜잭션이란?
- 트랜잭션은 작업의 완전성을 보장해주는 것
- 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에넌 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능
- 사용자 입장에서는 작업의 논리적 단위로 이해할 수 있고
시스템 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위
트랜잭션과 Lock
- 잠금(Lock)과 트랜잭션은 서로 비슷한 개념같지만 다름
- Lock은 동시성을 제어하기 위한 기능
- 잠금은 여러 커넥션에서 동시에 동일한 자원(레코드 or 테이블)을 요청할 경우
순서대로 한 시점에 하나의 커넥션만 변경할 수 있게 함
- 트랜젝션은 데이터의 정합성을 보장하기 위한 기능
- 트랜잭션은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합되었을 때만 의미있는 개념이 아님
- 트랜잭션은 하나의 논리적인 작업 셋 중 하나의 쿼리가 있든 둘 이상의 쿼리가 있든 관계없이
논리적인 작업 셋 자체가 100% 적용되거나 아무것도 적용되지 않아야 함을 보장하는 것
트랜잭션의 특성
원자성·Atomicity
- 만약 트랜잭션 중간에 어떠한 문제가 발생한다면 트랜잭션에 해당하는 어떠한 작업 내용도 수행되어서는 안되며, 아무런 문제가 발생되지 않았을 경우에만 모든 작업이 수행되어야 함
일관성·Consistency
- 트랜잭션이 완료된 다음의 상태에서도 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 함
고립성·Isolation