데이터베이스 트랜잭션(TCL)이란

2023. 12. 25. 17:49데이터베이스

트랜션 제어 언어(Transaction control language)이란  데이터 제어어(DCL)과 비슷한 맥락입니다 하지만 데이터를 제어하는 언어가 아닌 트랜잭션을 제어할 때 사용합니다 논리적인 작업 단위를 묶어 데이터 조작어(DML)에 의해 조작된 결과를 트랜잭션 별로 제어합니다 그렇다면 트랜잭션이 무엇인지 알아보겠습니다

썸네일

트랜잭션(Transaction)

데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말합니다 보통 데이터베이스관리시스템 선능을 초당 트랜잭션이 몇개가 실행되었는지를 측정합니다 MySQL의 입력하는 모든 명령어들은 각각 하나의 트랜잭션이라고 할 수 있습니다 간단하게 말해서 질의어(SQL)를 사용해 데이터베이스를 접근하는 것을 의미합니다

트랜잭션(Transaction)의 특징

트랜잭션(Transaction)의 특징은 크게 4가지로 구분됩니다

원자성(Atomicity) : 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가 아니면 전혀 반영되지 않아야 합니다 트랜잭션은 사람이 설계한 논리적인 작업 단위입니다 일처리는 트랜잭션의 작업이 부분적으로 실행되다가 중단되지 않고 작업별로 이루어져야 다루는데 무리가 없습니다 트랜잭션 내의 모든 명령은 완벽히 수행되어야 합니다 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 합니다

일관성(Consistency) : 일관성은 트랜잭션의 작업 처리결과가 항상 일관성이 있어야 합니다 즉 데이터 타입이 반환 전후가 항상 동일해야 합니다 

독립성(Isolation) : 독립성은 하나의 트랜잭션은 다른 트랜잭션에 띠어들 수 없습니다 마찬가지로 독립적임을 의미합니다 각각의 트랜잭션은 서로 간섭이 불가합니다 때문에 하나의 특정 트랜잭션이 완료될때까지 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없습니다 독립성의 성질을 보장할 수 있는 가장 쉬운 방법은 모든 트랜잭션을 순차적으로 수행하는 것이지만 병렬적 수행의 장정을 얻기 위해 데이터베이스관리시스템은 병렬적으로 수행하면서도 일렬 수행과 같은 결과를 보장할 수 있는 방식을 제공합니다

지속성(Dutability) : 지속성은 트랜잭션이 성공적으로 완료되었을 경우 결과는 영구적으로 반영되어야 한다는 점입니다 보통 Commit이 완료되면 지속성은 자연스럽게 충족됩니다

트랜잭션(Transaction)의 상태

트랜잭션의 상태는 5가지가 있습니다 

Active : 트랜잭션이 현재 실행 중인 상태 입니다

Failed : 트랜잭션이 실행되다 오류 발생으로 중단된 상태입니다

Aborted : 트랜잭션이 비정상 종료되어 Rollback이 수행된 상태입니다

Partially Committed : 트랜잭션의 연산이 마지막까지 실행되어 Commit이 되기 직전의 상태입니다

committed : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태입니다

 

트랜잭션(Transaction)의 Commit과 Rollback

Commit : Commit은 모든 작업들을 정상 처리하겠다고 확정하는 명령어입니다 해당처리과정을 데이터베이스에 영구 저장하겠다는 의미로 Commit을 수행하면 하나의 트랜잭션 과정이 종료됩니다 Commit을 하기 전에는 다른 사용자가 트랜잭션 내용을 확인할 수 없습니다 또한 변경된 행은 잠금이 설정됩니다 

Rollback : Rollback은 작업 중 문제가 발생되어 트랜잭션의 처리 과정에서 발생한 변경사항을 취소하는 명령어입니다 해당 명령을 트랜잭션에게 하달하면 트랜잭션은 Commit 되기 이전의 데이터로 돌아가 변경에 대한 것을 취소합니다 관련된 행에 대한 잠금이 풀립니다