트랜잭션 이해

학습 페이지

데이터를 왜 DB에 저장하는가? 중요한 이유중 하나는 DB가 트랜잭션을 지원하기 때문이다.

트랜잭션은 반드시 하나의 단위로 시작하고 끝마쳐야 하는 일련의 과정들을 하나의 단위로 시작하고 끝마칠 수 있게 해준다.

모든 작업이 성공해서 DB에 정상적으로 변동이 반영되는것을 커밋이라고하고, 트랜잭션을 이루는 과정중 하나라도 실패해서 트랜잭션 시작 이전으로 돌아가는 것을 롤백이라고 한다.

트랜잭션 ACID

원자성(Atomicitiy)

트랜잭션 내에서 실행한 작업들은 하나의 작업인 것처럼 모두 성공하거나, 모두 실패하거나 둘 중 하나의 상태만 가져야 한다.

일관성(Consistency)

모든 트랜잭션은 데이터베이스의 일관성을 깨트리면 안된다. 예를들어 DB의 무결성 제약 조건을 항상 만족해야 한다.

격리성(Isolation)

동시에 실행되는 트랜잭션들은 서로에게 영향을 미치면 안된다. 격리성은 성능이슈로 인해 트랜잭션 격리수준(Isolation Level)을 선택할 수 있다.

지속성(Durability)

트랜잭션을 성공적으로끝내면 그 결과는 항상 기록되어야한다. 일단 트랜잭션이 시작하면, 중간에 시스템에 문제가 생겨도 데이터베이스는 트랜잭션을 복구해내야만 한다.