soowanlog
트랜잭션 본문
- 트랜잭션이란?
트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위입니다.
데이터베이스의 상태를 변화시킨 다는 것은 CRUD를 이용해 데이터베이스에 접근한다는 것을 의미합니다.
이때 작업의 단위는 CRUD 한 문장이 아니라는 점을 주의해야 합니다.
예를 들어, 한 사용자가 게시판에 글을 올린다면 Insert문이 실행되고 게시판을 최신 정보로 유지하기 위해 Select문이 이어서 실행될 것입니다. 여기서 작업의 단위는 Insert문과 Select문을 합친 것입니다.
이러한 작업단위를 하나의 트랜잭션이라 합니다.
- 트랜잭션의 특징
ACID라는 약어로 표현되며, 각각의 특징은 다음과 같이 정의됩니다.
- 원자성(Atomicity) :
모든 데이터 변경 작업은 하나의 단일 작업으로 수행되는 것처럼 수행됩니다.
즉, 모든 변경이 수행되거나 모두 수행되지 않습니다.
- 일관성(Consistency) :
데이터는 시작 상태부터 끝 상태까지 일관된 상태를 유지하여 데이터 무결성을 강화합니다.
트랜잭션이 진행되는 동안 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 진행되는 것이 아니라 처음 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됩니다.
- 독립성(Isolation) :
트랜잭션의 중간 상태는 다른 트랜잭션에서 보이지 않으며, 결과적으로 동시에 실행되는 트랜잭션은 순차적으로 실행되는 것처럼 보입니다.
하나의 특정 트랜잭션이 완료될 때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없습니다.
- 지속성(Durability) :
트랜잭션이 성공적으로 완료된 후, 데이터의 변경 사항은 지속되며 시스템 장애가 발생하더라도 변경 사항이 취소되지 않습니다.
이러한 속성들은 신뢰성 있는 트랜잭션 처리를 가능하게 합니다.
- 트랜잭션의 Commit, Rollback
- Commit :
하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성 있는 상태에 있을 때 하나의 트랜잭션이 끝났다는 것을 알려주기 위한 연산입니다.
이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는 것을 도와줍니다.
- Rollback :
하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 처음부터 다시 시작하거나 트랜잭션의 부분적으로만 연산된 결과를 취소시키기 위한 연산입니다.
후에 사용자가 트랜잭션 처리된 단위대로 Rollback 연산을 수행할 수도 있습니다.
참 고 자 료
- 트랜잭션(Transaction)이란? | 개발자로 홀로 서기
'백엔드' 카테고리의 다른 글
Framework vs Library (0) | 2024.03.09 |
---|---|
관계형 데이터베이스 (0) | 2024.03.05 |