트랜잭션은 MySQL 의 작업의 완전성을 보장해주는 단위이다. 쿼리문을 실행하다가 에러가 발생하면 이전까지 작업하던 내용을 롤백시키거나 작업이 완료되면 작업 내용을 커밋시키는 등 MySQL 의 원자성을 보장해주는 단위이다.

Transaction 의 속성

트랜잭션에는 ACID 라고 하는 네 가지 속성이 있다.

Atomicity(원자성) 은 트랜잭션의 정의와 같다. 트랜잭션 내에 정의된 내용을 모두 적용하거나 적용하지 않는다는 속성이다. 에러가 발생할 경우 트랜잭션에 정의한 모든 과정들은 롤백되고, 성공적으로 작업을 마쳤을 경우 모든 내용이 올바르게 적용된다.

Consistency(일관성) 은 트랜잭션이 성공적으로 이루어졌을 때 트랜잭션 전의 상태와 커밋된 이후의 상태가 일관적이어야 한다는 속성이다. 예를 들어 테이블에 정의한 타입이 커밋된 이후에도 변경되지 않고 동일한 타입으로 남아있는 것이다.

Isolation(격리성) 은 두 개 이상의 트랜잭션이 서로 독립적으로 수행되어야 한다는 속성이다. 격리성에서 ‘격리’ 의 기준은 여러 개의 격리 수준으로 정의될 수 있다.

Durability(지속성) 은 트랜잭션이 성공적으로 이루어지면 반영된 내용은 시스템 내부적으로 에러가 발생하더라도 영구적으로 지속되도록 보장하는 속성이다.

Transaction 의 격리 수준

트랜잭션의 속성 중 격리성에 대해 4단계로 나누어볼 수 있다.