티스토리 뷰

트랜잭션

트랜잭션은 한 개 이상의 SQL문으로 이루어진 작업을 위한 논리적인 작업단위로써 분할할 수 없는 최소 수행단위이다.

트랜잭션은 DML과 DDL 명령어를 포함할 수 있으며, 연산의 집합이지만 논리적으론 하나로 보아야 하며 데이터베이스의 일관성과 무결성을 유지하기 위해 사용된다.

 

트랜잭션의 필요성에 관한 예로, 누군가에게 100만원을 송금할 때 UPDATE 구문이 다음과 같은 순서로 실행된다고 가정하면 A계좌의 UPDATE 구문이후 B계좌의 정보가 UPDATE된다.

이 때 A계좌의 UPDATE 쿼리가 실행된 후 예상치못한 오류가 발생한다면 A계좌의 데이터(100만원)는 사라지게된다.

만약 두 개의 UPDATE 구문을 하나의 트랜잭션에 담는다면 오류가 발생하더라도 데이터가 사라지는 상황을 방지할 수 있다. 트랜잭션 내에 있는 명령어는 모두 수행되거나 모두 수행하지 않기 때문인데('ALL OR NOTHING') 트랜잭션의 특징 중 원자성에 해당한다.

 

트랜잭션의 4가지 특성(ACID)

- 원자성(Atomicity) : 트랜잭션의 연산은 모두 반영되든지(ALL) 혹은 전혀 반영되지 않아야한다(NOTHING).

- 일관성(Consistency) : 트랜잭션 실행 후 데이터베이스의 무결성은 유지되어야한다.

- 격리성,독립성(Isolation) : 트랜잭션 실행 중에는 다른 트랜잭션이 접근할 수 없다.

- 영속성(Durability) : 트랜잭션의 결과는 계속 유지되어야한다.

 

TCL

SQL에서는 트랜잭션을 제어하는 명령어를 따로 분리해 TCL(Transaction Control Language)이라고 구분하기도 한다. TCL에는 트랜잭션을 반영하는 COMMIT과 취소하는 ROLLBACK이 있다.

 

ROLLBACK

트랜잭션을 취소할 때 사용한다. SQL을 수행하는 도중 TCL, DDL, DCL에 해당하는 작업이 없다면 이들은 하나의 트랜잭션에 속해있다. 트랜잭션을 반영하기 전에 ROLLBACK 명령어를 사용하면 트랜잭션에 포함된 데이터 조작 명령어(DML)의 수행을 취소한다.

INSERT INTO DEPT VALUES(50, 'HR', 'BUSAN');
UPDATE DEPT SET LOC = 'SEOUL' WHERE DEPTNO = 10;
DELETE FROM DEPT WHERE DEPTNO = 30

ROLLBACK;

COMMIT

수행한 트랜잭션 명령어(데이터 변경내역)를 데이터베이스에 반영할 때 사용하는 명령어다. COMMIT된 트랜잭션의 반영은 되돌릴 수 없으므로 신중하게 사용해야한다.

 

'Computer Science > Database' 카테고리의 다른 글

[Oracle]DB 인덱스 정의, 특징, 주의사항  (0) 2023.02.25
RDBMS와 SQL이란  (0) 2022.07.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함