CS/DB

[DB] 트랜잭션

겜도리도리 2022. 3. 15. 17:30
반응형

개요

트랜잭션이란, DBMS에서 데이터베이스의 상태를 변경시키는 상호작용의 단위, 또는 일련의 연산들을 뜻한다.

성질

1. 원자성(Atomicity)

트랜잭션 연산은 DB에 전부 반영되든지, 전혀 반영되지 않든지 둘 중 하나만 해야함.

모든 명령이 완벽히 수행되어야함. 만약 한 명령이라도 수행 중 오류가 발생하면 지금까지 실행했던 트랜잭션 전부가 취소 되어야함.

 

2. 일관성(Consistency)

트랜잭션 실행이 성공하면, 언제나 일관성 있는 상태로 변화해야 함.

시스템이 가지고 있는 고정요소가 트랜잭션 수행 전 / 후 상태가 같아야 함.

 

3. 독립성(Isolation)

한 트랜잭션 실행 중에 다른 트랜잭션 연산이 끼어들 수 없음.

수행 중인 트랜잭션이 완전히 종료될 때 까지, 트랜잭션 끼리 서로를 참조할 수 없음.

 

4. 영구성(Durability)

완료된 트랜잭션 결과는 시스템이 고장나더라도 영구적으로 데이터베이스에 반영되어야 함.

 

이 4가지 성질을 앞글자를 따 ACID라고 부르기도 한다.

 

연산 및 상태

Commit

트랜잭션이 성공적으로 수행되었음을 의미한다.

커밋 연산이 수행된 후에, 데이터베이스에 결과가 반영되므로 데이터베이스가 일관된 상태를 유지할 수 있다.

 

Rollback

트랜잭션이 실패했음을 의미한다.

일부 연산이 처리되지 못한 경우에 발생하고, 원자성에 의해 트랜잭션 실행 전의 상태로 데이터베이스를 되돌려야 한다.

 

트랜잭션이 가질 수 있는 상태는 다음과 같다.

활성 : 트랜잭션이 실행 중인 상태이다. 

실패 : 트랜잭션 실행 중에 오류가 발생하여 중단된 상태이다. 

철회 : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태이다.

부분 완료 : 트랜잭션의 마지막 연산까지 수행되었지만, Commit 연산이 실행되기 전의 상태이다.

완료 : 트랜잭션이 오류없이 완료되어 Commit 연산을 실행한 후의 상태이다.

반응형

'CS > DB' 카테고리의 다른 글

[SQL] Table 생성 및 수정, 삭제  (0) 2022.04.25
[SQL] 내포된 SQL  (0) 2022.04.24
[DB] 연산자  (0) 2022.03.23
[DB] 무결성 제약 조건  (0) 2022.03.18
[DB] 릴레이션 키  (1) 2022.03.17