TCL(트랜잭션 제어어)

한준수·2023년 5월 30일
0

SQLD

목록 보기
17/31
post-thumbnail

TCL이란 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 기능

트랜잭션개요

개념

1.데이터 베이스의 논리적 연산단위
2.하나의 트랜잭션에는 하나 이상의 SQL문장이 포함된다.
3.밀접히 관련되어 분리될 수 없는 한 개 이상의 DB조작
4.그렇기 때문에 전부 적용하거나 전부 취소(ALL or NOTHING)

트랜잭션의 특성

특성 설명
원자성(atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (ALL or NOTHING)
일관성(consistency) 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
고립성(isolation) 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
지속성(durability) 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터 베이스의 내용은 영구적으로 저장된다.

잠금(Locking)

  • 원자성과 관련이 있다.
    어떤 트랜잭션이 진행중일 때 방해받지 못하게 함(ex 중복이체)

COMMIT

트랜잭션 완료상태일 때 사용
올바르게 반영된 데이터를 DB에 반영

ROLLBACK

트랜잭션 시작 이전의 상태로 되돌림
COMMIT 되지 않은 모든 트랜잭션을 롤백함.

COMMIT이나 ROLLBACK 이전의 데이터 상태

  • 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터 변경 이전 상태로 복구가능
  • 현재 사용자는 SELECT 문장으로 결과 확인 가능
  • 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음
  • 변경된 행은 잠금(Locking)이 설정되어 다른사용자가 변경불가

COMMIT 이후의 데이터 상태

  • 데이터에 대한 변경 사항이 DB에 반영
  • 이전 데이터는 영원히 손실
  • 모든 사용자는 결과를 볼 수 있음
  • 관련된 행에 잠금(Locking)이 풀리고, 다른 사용자들이 행을 조작할 수 있음.

COMMIT/ROLLBACK 효과

  • 데이터 무결성 보장
  • 영구적인 변경을 하기 전 데이터 변경사항 확인 가능
  • 논리적 연관된 작업 그룹핑하여 작업가능

사용 방법

SAVEPOINT SVPT1;
ROLLBACK TO SVPT1;
COMMIT;
profile
응애에요

0개의 댓글