카테고리 없음

[ 데이터베이스 ] TCL , 트랜잭션, COMMIT, ROLLBACK, SAVEPOINT

psy_er 2023. 9. 30. 18:33
728x90

[ 데이터베이스 ] TCL , 트랜잭션, COMMIT, ROLLBACK, SAVEPOINT

트랜잭션

 

트랜잭션

- 데이터베이스 조작, 논리적 연산단위,

- 하나의 SQL 문장 포함,

- 의미적으로 분할할 수 없는  최소 단위,

- ALL OR NOTHING

 

 

트랜잭션 특성 (ACID)

특성 설명
원자성 (Atomicity) 트랜잭션에서 정의된 연산들은 모두 실행 or 전혀 실행되지 않음 (ALL OR NOTHING)
lOCK 기능을 이용해 다른 트랜잭션 동시 접근 제어
일관성 (Consistency) 트랜잭션이 실행 되도 데이터 베이스 내용은 잘못되지 않아야함
고립성 (Isolation) 트랜잭션 실행 도중 다른 트랜잭션 영향 받으면 안돼
지속성 (Durability) 트랜잭션 수행되면 갱신된 데이터베이스 내용은 영구적으로 저장됨

 

TCL 

 

COMMIT 

변경된 데이터를 데이터베이스에 영구 반영, INSERT, UPDATE, DELETE 사용 후 변경 완료 데이터베이스에 알려줌

COMMIT 이후 : 변경사항 저장, 이전 데이터 사라짐, 결과 볼 수 있음, LOCKING 풀림

 

 

ROLLBACK

변경된 데이터 문제시, COMMIT 이전 상태로 변경 사항 취소 가능

ROLLBACK 이후 : 변경사항 취소, 이전 데이터 재저장, LOCKING 풀림

 

 

SAVEPOINT(저장점) 

SAVEPOINT : 미리 지정한 SAVEPOINT까지 트랜잭션 일부 롤백, 같은 이름의 SAVEPOINT 정의 시, 나중 설정값 유효

SAVEPOINT SVPT1;
ROLLBACK SVPT1;

SAVEPOINT A가 SAVEPOINT B보다 더 이전에 설정되었는데, ROLLBACK A를 실행하면 SAVEPOINT B는 사라진다.

 

 

COMMIT과 ROLLBACK

 

COMMIT 과 ROLLBACK 수행되면 종료된다.

논리적으로 연관된 작업을 그룹핑하여 처리 가능

영구적 변경 전 데이터 변경 사항 확인 가능

데이터 무결성 보장

 

DDL (CREATE, ALTER, DROP, RENAME, TRUNCATE TABLE)이 수행되면 자동 커밋된다.

데이터베이스 정상 종료 시 자동 커밋

데이터베이스 비정상 종료시 자동 롤백

 

ORACLE DML 수행시 사용자가 COMMIT, ROLLBACK 해주어야 한다.

SQL SERVER DML 수행 시 AUTO COMMIT 자동 커밋된다.

 

 

SQL SERVER  3가지 COMMIT

 

AUTO COMMIT : DML, DDL 단위 SQL 수행할 때마다 DBMS가 트랜잭션 컨트롤, 명령어 오류 없을 때 자동 커밋

 

암시적 트랜잭션 : 트랜잭션 시작은 DBMS가 처리, 사용자가 임의로 COMMIT, ROLLBACK시 트랜잭션 종료

SET IMPLICIT TRANSACTION ON

 

명시적 트랜잭션 : 트랜잭션  시작과 끝 모두 사용자가 지정

BEGIN TRANACTION

COMMIT TRANCATION, ROLLBACK TRANSACTION

728x90