트랜잭션 편집하기
최신판 | 당신의 편집 | ||
80번째 줄: | 80번째 줄: | ||
=== 연산 === | === 연산 === | ||
==== 커밋 ==== | ==== 커밋 ==== | ||
− | + | 커밋(commit) 연산은 모든 작업들을 정상적으로 처리하겠다고 확정하는 명령어로서, 처리과정을 데이터베이스에 영구적으로 저장하는 것이다. 커밋을 수행하면 하나의 트랜잭션 과정을 종료하는 것이다. 커밋을 수행하면 이전 데이터가 완전히 업데이트된다.<ref name="트랜잭션"/> 우측 그림에서 첫 번째 커밋 후 그 뒤에 Update 문으로 데이터를 갱신하고 Delete 문으로 데이터를 삭제한 후 Insert 문을 사용해 데이터를 삽입한다. 만약 이 모든 과정이 오류 없이 수행되었다면 지금까지 실행한 모든 작업을 데이터베이스에 영구 저장하라는 명령으로 커밋을 수행한다.<ref name="트랜잭션2"/> | |
==== 롤백 ==== | ==== 롤백 ==== | ||
− | + | 롤백(rollback) 연산은 작업 중 문제가 발생하여 트랜잭션의 처리과정에서 발생한 변경사항을 취소하는 명령어이다. 이 트랜잭션의 일부가 정상적으로 처리되더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소한다는 특징이 있다. 트랜잭션이 시작되기 이전의 상태로 되돌린다. 즉, 마지막 커밋을 완료한 시점으로 다시 돌아간다. 커밋하여 저장한 것만 복구한다. 롤백 시에는 해당 트랜잭션을 재시작하거나 폐기한다.<ref name="트랜잭션"/> 우측 그림에서 롤백 명령은 마지막으로 수행한 커밋 명령까지만 정상 처리된 상태로 유지한다. 그 이후에 수행했던 모든 DML 명령어 작업들을 취소시켜 이전 상태로 원상 복귀 시킨다. 트랜잭션은 이렇듯 all or nothing(모든 것을 수행하던지 아무것도 하지 말던지) 방식으로 DML 명령어들을 처리한다.<ref name="트랜잭션2"/> | |
====세이브포인트==== | ====세이브포인트==== | ||
− | + | 세이브포인트(save point)는 임시저장과 같은 맥락으로 이해할 수 있다. 보통 롤백을 명시하면 삽입, 삭제, 업데이트 등의 작업 전체가 취소되는데 전체가 아닌 특정 부분에서 트랜잭션을 취소시킬 수 있다. 세이브포인트를 쓰면 현재의 트랜잭션을 작게 분할 가능하다. 세이브포인트는 여러 개의 [[에스큐엘]](SQL)문의 실행을 수행하는 트랜잭션의 경우에 사용자가 트랜잭션 중간 단계에서 세이브포인트를 지정할 수 있다. 세이브포인트를 쓰려면 취소하려는 지점을 명시한 뒤, 그 지점까지 작업을 취소하는 식으로 사용하는데 이 지점을 세이브포인트라고 한다. 세이브포인트를 지정한 뒤 롤백 투 세이브포인트 이름;(rollback to save point name;)을 실행하면 해당 세이브포인트 지점까지 처리한 직업이 롤백된다. | |
== 스케줄 종류 == | == 스케줄 종류 == |