TCL 뜻과 트랜잭션 개념에 대해서 이야기해봅시다.
TCL 뜻과 트랜잭션 개념 알기
TCL(Transaction Control Language)은 데이터베이스(DataBase)에서 트랜잭션(Transaction)을 제어하는 명령어입니다. TCL은 트랜잭션을 제어하는 명령어로 대표적으로 COMMIT, ROLLBACK, SAVEPOINT 3가지가 있습니다.
트랜잭션(Transaction)은 분리할 수 없는 한 개 이상의 데이터베이스(DataBase)를 조작하는 논리적 연산 단위입니다. 예를 들어 물건을 하나 결제하고 물건 재고가 하나 차감 되는 2가지 액션이 하나로 묶여서 동작하게 되는 것을 말합니다.
트랜잭션은 4가지 중요한 특징을 가지고 있습니다. 트랜잭션의 4가지 특징은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 입니다.
TCL 뜻과 트랜잭션 개념 설명
TCL 뜻(Transaction Control Language)은 데이터(Data)를 제어하는 것이 아닌 트랜잭션(Transaction)을 제어하기 위해서 사용하는 명령어입니다.
TCL(Transaction Control Language)은 트랜잭션을 제어하는 언어입니다. 논리적인 작업 단위를 묶어서 DML(Data Manipulation Language)에 의해서 조작된 결과를 트랜잭션 별로 제어하는 것입니다.
트랜잭션(Transaction)은 쪼갤 수 없는 업무 처리의 단위입니다. 트랜잭션은 절대적으로 반드시 한 세트로 묶을 수 밖에 없는 논리적 업무 단위입니다. 일반적으로 트랜잭션은 데이터베이스(DataBase)의 상태를 변화시키기 위해서 수행하는 작업 단위가 됩니다.
트랜잭션은 4가지 특징을 가지고 있습니다. 트랜잭션의 4가지 특징은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)로 정리됩니다.
[트랜잭션의 4가지 특징]
구분 | 내용 |
1 | 원자성(Atomicity) |
2 | 일관성(Consistency) |
3 | 고립성(Isolation) |
4 | 지속성(Durability) |
원자성(Atomicity)은 트랜잭션으로 묶여진 일련의 동작들이 모두 성공하거나 모두 실패하는 구조를 의미합니다. 즉 전부 성공하거나 전부 실패하는 2가지 옵션만 존재하는 것을 말합니다.
일관성(Consistency)은 트랜잭션이 모두 완료된 다음에도 데이터베이스가 가지고 있는 데이터들이 일관적이어야 한다는 것을 말합니다. 예를 들어 이미 결제된 물건의 수량과 남아 있는 물건의 재고의 합은 처음 보유하고 있었던 물건의 총 수량과 동일해야 하는 것입니다.
고립성(Isolation)은 하나의 트랜잭션이 고립되어 수행되어야 한다는 것입니다. 만약 구매하고자 하는 물건을 지금 다른 사람이 먼저 구매하고 있을 경우 재고 물건 데이터를 참조하거나 변경할 수 없고 물건을 구매하고 있는 사람의 트랜잭션이 종료될 때까지 대기해야 하는 구조로 구성되어야 한다는 것을 말합니다.
지속성(Durability)은 트랜잭션이 성공적으로 수행되었을 때 트랜잭션이 변경한 데이터가 영구적으로 저장되어야 한다는 것을 말합니다. 트랜잭션이 로그에 남겨진 다음에 COMMIT이 진행되어야 하며 이는 시스템 장애가 발생하더라도 복구가 가능해야 한다는 특징입니다.
TCL(Transaction Control Language)는 대표적으로 3가지 명령어들이 있습니다. 대표적인 명령어는 COMMIT, ROLLBACK, SAVEPOINT입니다.
[TCL의 3가지 명령어]
구분 | 내용 |
1 | COMMIT |
2 | ROLLBACK |
3 | SAVEPOINT |
COMMIT은 INSERT, DELETE, UPDATE 다음에 변경된 내용을 확정하고 반영하는 명령어입니다. COMMIT을 실행하지 않으면 메모리까지만 반영이 되고 메모리는 휘발성을 가지고 있기 때문에 언제든지 없어질 수 있고 다른 사용자는 변경된 값을 조회할 수 없게 됩니다. 그래서 COMMIT을 실행해야지만 최종적으로 데이터 파일에 기록되고 트랜잭션이 완료되게 됩니다. UPDATE를 진행한 다음 오랫동안 COMMIT과 ROLLBACK을 하지 않았다면 락(Lock)에 걸려서 다른 사용자는 변경할 수 없는 상황이 발생할 수도 있습니다. 이 점은 주의해야 하는 점입니다.
ROLLBACK은 INSERT, DELETE, UPDATE 다음에 변경된 내용을 취소하는 명령어입니다. ROLLBACK을 하게 되면 변경하기 전 값으로 복구됩니다. UPDATE를 한 다음 오랫동안 COMMIT이나 ROLLBACK을 하지 않았을 경우에는 락에 걸려서 다른 사용자가 변경할 수 없는 상황이 발생할 수 있습니다.
SAVEPOINT는 ROLLBACK을 수행할 때 전체적으로 작업을 되돌리지 않고 일부만을 되돌릴 수 있게 하는 명령어입니다. ROLLBACK을 할 때 SAVEPOINT를 지정해주면 해당 지점까지만 데이터가 복구됩니다.