본문 바로가기

Database

[Database] 트랜잭션 알아보기! (COMMIT, ROLLBACK, 특징)

안녕하세요

호고코입니다 ㅎㅎㅎㅎ

 

오늘은 트랜잭션에 대해서 정리를 해보겠습니다!


1. 트랜잭션이란?

트랜잭션 정의
데이터베이스의 논리적 연산단위
분리될 수 없는 한 개 이상의 데이터베이스 조작
ALL OR NOTHING (전부 적용하거나 전부 취소)

 

2. 트랜잭션 특징

원자성
(AUTOMICITY)
정의된 연산들은 모두 성공적으로 실행되던지 실행이 되지 않은 상태로 남아있어야 함
ALL OR NOTHING
일관성
(CONSISTENCY)
트랜잭션이 실행된 이후에도 데이터베이스의 내용에 이상이 있으면 안됨
고립성
(ISOLATION)
트랜잭션이 실행되는 도중에 다른 트랜잭션에 영향을 받지않음
지속성
(DURABILITY)
트랜잭션이 성공적으로 수행이 됐을때, 내용은 영구적으로 저장

 

3. COMMIT

COMMIT
COMMIT;
명령어를 통하여 트랜잭션을 완료할 수 있음
COMMIT 이전의 상태는
메모리 BUFFER에만 영향을 받았기 때문에,
이전 상태로 복구가 가능
변경된 행은 잠금(LOCKING)이 설정되어 있어
다른 사용자가 수정할 수 없음
현재 사용자는 SELECT 문장으로 수정된 결과를 확인 가능
다른 사용자는 수정된 결과를 확인할 수 없음
COMMIT;

 

4. ROLLBACK

ROLLBACK
ROLLBACK;
명령어를 통해 이전 상태로 돌아갈 수 있음
입력, 수정, 삭제한 데이터들을 이전 상태로 되돌릴 수 있음
(COMMIT이 선언되기 이전)
변경사항이 취소되며,
잠금(LOCKING)이 풀려 다른 사용자가 데이터를 변경할 수 있음
ROLLBACK;
 

 

5. SAVEPOINT

저장점
(SAVE POINT)
ROLLBACK 할 때 현 시점에서 SAVEPOINT까지 트린잭션의 일부만 롤백할 수 있음
※ 현재 지점을 저장할 경우 SAVEPOINT (저장점명); ※ 저장한 지점까지 롤백할 경우 ROLLBACK TO (저장점명);