DB

[RDS] TCL 정리

선호하는 2025. 1. 23. 07:00

TCL이란?

TCL은 트랜잭션 제어 언어의 약자로, DBMS에서 트랜잭션을 제어하는 역할을 한다.
종류는 BEGIN, SAVEPOINT, COMMIT, ROLLBACK이 있다.

BEGIN

BEGIN;

트랜잭션을 시작하는 명령어.

SAVEPOINT

SAVEPOINT {SAVEPOINT 이름};

트랜잭션을 진행중인 상태에서, 현재까지의 진행 상황을 저장하는 명령어.

COMMIT

COMMIT;

트랜잭션을 종료하고, 트랜잭션 내부에서 진행된 작업을 DB에 저장하는 명령어.
이 작업이 진행될 경우, DBMS의 상태는 되돌릴 수 없다.

ROLLBACK

ROLLBACK;
ROLLBACK TO {SAVEPOINT 이름};

트랜잭션을 종료하고, 트랜잭션 내부에서 진행된 작업을 트랜잭션 시작 전으로 되돌리는 명령어.
세이브포인트가 존재할 경우, 지정한 세이브포인트 이전까지 진행된 작업을 되돌리는 명령어.

중첩 트랜잭션

트랜잭션 내부에서, 트랜잭션을 추가로 생성하는 것을 중첩 트랜잭션이라고 한다.
몇몇 DBMS에서 지원하고, 지원하지 않는 DBMS도 있다.
한 트랜잭션에서 진행하는 내용이 많을 경우, 각 작업을 분리해 순차적으로 실행할 수 있다.
작업을 분리하였기 때문에, 관리가 용이해지고 오류가 발생할 경우 복구가 쉬워진다.

중첩 트랜잭션을 지원하지 않을 경우

SAVEPOINT를 사용해서 거의 동일하게 진행할 수 있다.
하지만 이 경우, 트랜잭션을 병렬로 사용할 수는 없다.