트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미
하나의 트랜잭션은 Commit되거나 Rollback된다.
Atomicity(원자성)
Consistency(일관성)
Isolation(독립성,격리성) // CJmall과 같이 다수의 사용자가 동시에 트랜잭션을 요청하는 경우, DB 독립성에 대해 정합성이 보장되어야 한다.
Durablility(영속성,지속성)
READ UNCOMMITTED
READ UNCOMMITTED 문제점
DIRTY READ
현상: 트랜잭션이 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있게 되는 현상READ COMMITTED
RDB에서 대부분 기본적으로 사용되고 있는 격리 수준이다.
Dirty Read 현상 발생X
실제 테이블 값을 가져오는 것이 아니라 Undo 영역에 백업된 레코드에서 값을 가져온다.
READ COMMITTED 문제점
REPEATABLE READ (MVCC, Multi Version Concurrency Control)
MySQL
에서는 트랜잭션마다 트랜잭션 ID를 부여하여 트랜잭션 ID보다 작은 트랜잭션 번호에서 변경한 것만 읽게 된다.REPEATABLE READ 문제점
PHANTOM READ
현상: 다른 트랜잭션에서 수행한 변경 작업에 의해 레코드가 보였다가 안 보였다가 하는 현상SERIALIZABLE