민규의 흔적

[오라클 DB] 트랜잭션의 완료(COMMIT)와 철회(ROLLBACK) 본문

데이터베이스

[오라클 DB] 트랜잭션의 완료(COMMIT)와 철회(ROLLBACK)

민규링 2024. 1. 31. 01:55

 

COMMIT과 ROLLBACK

 

트랜잭션의 완료 - COMMIT 연산

 

트랜잭션에서 변경하려는 내용이 데이터베이스에 완전하게 반영된다.

 

트랜잭션의 철회 - ROLLBACK 연산

 

트랜잭션에서 변경하려는 내용이 데이터베이스 일부만 반영된 경우, 원자성을 보장하기 위해서 트랜잭션이 갱신한 사항을 트랜잭션 수행되기 전의 상태로 되돌린다.

 

아래의 예시를 보자.

 

 

위 그림의 파란색 선 전체를 하나의 트랜잭션으로 보자.

위의 트랜잭션 연산은 정상적으로 수행되어, 끝내 COMMIT 연산을 통해 데이터베이스에 트랜잭션으로 변경된 내용이 그대로 반영되었다.

 

하지만, 아래의 트랜잭션 연산은 d1, u1, i1 연산을 수행한 이후, i2 연산을 수행하기 전에 고장이 나버려 수행하지 못하였다.

위와 같은 경우 ROLLBACK 연산을 통해 트랜잭션을 시작하기 이전의 시점(혹은 마지막으로 COMMIT한 시점)으로 상태를 되돌린다.