본문 바로가기
데이터베이스/SQLD

[TCL] 트랜잭션

by 나는 유찌 2020. 6. 7.

* SQL 전문가 가이드를 보고 작성하였습니다.

 

 

 

 

 

트랜잭션 


트랜잭션은 데이터베이스의 논리적 연산단위이며 분할할 수 없는 최소의 단위입니다.

그렇기 때문에 전부 적용하거나 전부 취소합니다. (ALL OR NOTHING)

 

* 커밋(COMMIT) : 올바르게 반영된 데이터를 데이터베이스에 반영시키는 것을 말합니다.

* 롤백(ROLLBACK) : 트랜잭션 시작 이전의 상태로 되돌리는 것을 말합니다.

* 저장점(SAVEPOINT) : 롤백할 지점을 선택하여 저장점으로 지정하는 것을 말합니다.

 

트랜잭션의 대상이 되는 SQL문은 UPDATE, INSERT, DELETE 등 데이터를 수정하는 DML문 입니다.

 

예를 들어, 계좌이체를 생각합니다. 

1. 100번 계좌의 잔액에서 10,000을 뺍니다.

2. 200번 계좌의 잔액에 10,000을 더합니다.

 

계좌이체라는 작업 단위는 위의 두 개의 업데이트가 모두 성공적으로 완료되었을 때 종료됩니다.

둘 중 하나라도 실패할 경우 계좌이체는 원래의 금액을 유지하고 있어야 합니다.

 

만일 어떠한 장애에 의해 어느 쪽이든 한쪽만 실행되었을 경우, 이체한 금액은 어디로 증발하거나 마음대로 증가하게 됩니다. 이렇게 장애가 일어날 경우 수정을 취소하여 원 상태로 되돌려야만 합니다.

 

이러한 계좌이체 같은 하나의 논리적인 작업 단위를 구성하는 세부적인 연산들의 집합을 트랜잭션이라고 합니다.

 

 

 

 

트랜잭션의 특성


특성

설명

원자성

(atomicity)

트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지

아니면 전혀 실행되지 않은 상태로 남아 있어야 한다.

(all or nothing)

일관성

(consistency)

트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용이 잘못되어 있으면 안된다.

고립성

(isolation)

트랜잭션이 실행되는 도중 잘못된 결과를 만들어서는 안된다.

지속성

(durability)

트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

 

'데이터베이스 > SQLD' 카테고리의 다른 글

[DML] INSERT, UPDATE, SELECT  (0) 2020.06.07
[DDL] ALTER TABLE  (0) 2020.06.07
[DDL] CREATE TABLE  (0) 2020.06.07
데이터 유형 (CHAR, VARCHAR, NUMERIC, DATE)  (0) 2020.06.07
관계형 데이터베이스, SQL, TABLE  (0) 2020.06.07