2.1.4 TCL

YJ·2022년 8월 29일

2.1.4 TCL

트랜잭션 개요

  • 데이터베이스의 논리적 연산 단위
  • 분리될 수 없음
  • 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨
  • 분할 불가능한 최소의 단위
  • ALL or NOTHING

특성

  • 원자성: 정의된 연산들은 모두 성공적으로 실행되던지 전혀 실행되지 않은 상태로 남아 있어야 한다.
  • 일관성: 실행 전 데이터베이스 내용이 잘못되어 있지 않다면 실행 후에도 데이터베이스의 내용에 잘못이 있으면 안 된다.
  • 고립성: 트랜잭션 실행 도중에 타 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.
  • 지속성: 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

잠금(LOCKING)

  • 트랜잭션 수행하는 동안 특정 데이터에 대해 다른 트랜잭션이 동시에 접근하지 못하도록 제한

TCL

  • COMMIT
  • ROLLBACK
  • SAVEPOINT

COMMIT

  • 데이터베이스에서 입력한 자료, 수정한 자료에 대해 또는 삭제한 자료에 대해 전혀 문제가 없다고 판단된 경우 COMMIT 명령어 통해 트랜잭션을 수행할 수 있다.

예시

UPDATE INTO PLAYER
SET HEIGHT = 200;

COMMIT;

SQL Server의 COMMIT

  • AUTO COMMIT
    • SQL Server의 기본방식
    • DML, DDL 수행 시 DBMS가 트랜잭션을 컨트롤하는 방식
  • 암시적 트랜잭션
    • ORACLE과 같은 방식으로 처리됨
    • 트랜잭션의 시작은 DBMA가 처리하고 끝은 사용자가 명시적으로 COMMIT, ROLLBACK 가능
  • 명시적 트랜잭션
    • BEGIN TRANSACTION(= BEGIN TRAN)으로 트랜잭션을 시작
    • COMMIT TRANSACTION, ROLLBACK TRANSACTION으로 종료

ROLLBACK

  • 테이블 내 입력한 데이터나, 수정한 데이터, 삭제한 데이터에 대해 COMMIT 이전에는 변경 사항을 취소할 수 있는데, 데이터베이스에서는 롤백 기능을 사용한다.

롤백 예제

UPDATE INTO PLAYER
SET HEIGHT = 200;

ROLLBACK;

SQL Server의 ROLLBACK

  • 롤백 기능 사용 시 명시적으로 트랜잭션 수행하여야 함

COMMIT과 ROLLBACK의 효과

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

SAVEPOINT(저장점)

  • 저장점을 정의하면 롤백을 할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 저장점까지 트랜잭션의 일부만 롤백할 수 있다.

SAVEPOINT에 따른 ROLLBACK의 원리

  • 또한 저장점 없이 ROLLBACK 실행하는 경우 반영 안 된 모든 변경사항을 취소함.
  • 저장점 A로 되돌린 후 B와 같이 미래 방향으로 되돌릴 수는 없음

SAVEPOINT 예시

INSERT INTO PLAYER(PLAYER_ID, TEAM_ID, PLAYER_NAME, HEIGHT, WEIGHT, BACK_NO) 
VALUES ('2000000', 'K02', '이운재', 'GK', 182, 82, 1);

SAVEPOINT SVPT_A;

UPDATE PLAYER 
SET WEIGHT = 50;

SAVEPOINT SVPI_B; 

정리

  • DML 수행 시 그 변경되는 데이터의 무결성을 보장하는 것이 COMMIT, ROLLBACK의 목적
  • 커밋은 변경된 데이터를 테이블에 영구적으로 반영해라
  • 롤백은 변경된 데이터에 문제가 생겼으니 변경 전 데이터로 돌아가라
  • 저장점은 데이터 변경을 사전에 지정한 '저장점까지만' 롤백하라 라는 의미
  • DDL 실행 시 그 전후 시점에 자동으로 커밋
  • DML 문장 이후에 커밋없이 DDL문자 실행하면 자동으로 커밋
  • 정상 접속 종료 시 자동으로 트랜잭션 커밋
  • 어플리케이션 이상으로 데이터베이스와 접속 단절 시 자동 롤백
profile
💻귀찮으니 필요할 때만 쓰는 Computer Vision 일지 ㅇㅇ💻

0개의 댓글