[DB] 트랜잭션

📁 트랜잭션 Transaction

데이터베이스 상태를 변화시키기 위해 수행하는 논리적 작업단위

 

데이터베이스의 상태를 변화시킨다는 것은 질의어를 통해 데이터베이스에 접근한다는 것을 의미한다.

그러나 반드시 질의어 한문장이 하나의 작업단위가 되는 것은 아니며, 이는 작업자의 재량에 의해 결정된다.

특징

ACID

Automicity, Consistancy, Isolation, Durability

트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질

원자성 Automicity

더 이상 쪼개질 수 없는 성질.
트랜잭션은 데이터베이스에 모두 반영되거나 혹은 아예 반영되지 않아야 한다.

일관성 Consistency

트랜잭션의 작업처리 결과는 항상 일관되어야 한다.

트랜잭션이 진행되는 도중에 데이터베이스가 변경되더라도 트랜잭션은 기존의 데이터베이스에서 진행된다.

독립성 Isolation

하나의 트랜잭션은 다른 트랜잭션에 대해 독립적이다.

두 트랜잭션이 동시에 진행되더라도 각각의 연산은 독립적으로 진행된다.

지속성 Durability

트랜잭션이 성공적으로 완료되었을 때, 그 결과는 영구적으로 반영되어야 한다.

📁 TCL

Transaction Control Language

트랜잭션 제어어. 트랜잭션의 ACID와 관련된 개념

COMMIT

하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성있는 상태에 있을 때 이를 알려주기 위해 사용하는 명령어.

COMMIT 시 트랜잭션이 로그에 저장되어 데이터베이스를 작업 이전으로 되돌릴 수 없는 상태가 된다.

ROLLBACK

트랜잭션이 비정상적으로 종료되어 원자성이 깨졌을 때 데이터베이스를 트랜잭션 이전 상태로 되돌리기 위해 사용하는 명령어.

ROLLBACK 시 데이터베이스는 마지막 COMMIT 당시의 상태로 복구된다.