안녕하세요. 똥돼지입니다.
이번에는 데이터베이스에서 많이 쓰이는 트랜잭션(Transaction)에 대하여 알아보도록 하겠습니다.
1. 트랜잭션(Transaction)이란?
트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다.
주로 한꺼번에 처리되어야 할 작업들을 DB에 반영시키거나, 실행 전 상태로 복원하는 역할을 합니다.
특히 데이터베이스 작업 중 INSERT, UPDATE, DELETE의 경우 데이터 자체가 변경되므로 실패를 할 경우 심각한 오류를 가지게 될 수도 있다. 이때, 트랜잭션을 사용하여 사용자가 생각하는 작업 단위를 쪼개어 데이터를 안전하게 변경할 수 있고, 실패할 경우 언제든지 원상태로 되돌릴 수 있다.
예를 들어, 학생들이 수업을 변경하는 경우 각 수업마다 학생들을 기록하는 테이블이 따로 존재한다.
어떤 학생이 수학(Mass) 수업에서 영어(English) 수업으로 변경할 때, 수학에 등록된 학생을 영어 수업으로 등록(INSERT) 후 수학 수업에서 삭제(DELETE) 해야 한다. 그런데 영어 수업에 등록 중 실패를 하였음에도 불구하고, 수학 수업에서 삭제가 된다면 이 학생은 어떤 수업에도 포함되지 않게 된다.
이럴 때 트랜잭션을 사용하여 수학 수업에서 영어 수업으로 등록이 정상적으로 이루어진 후 수학 수업에서 삭제하는 작업을 하나의 단위가 되고, 모두 정상적으로 작업 수행이 끝난 경우 데이터베이스에 반영 또는 중간에 실패가 있을 경우 원상태로 되돌리는 역할을 하여 데이터가 소실되는 것을 방지할 수 있다.
2. 트랜잭션(Transaction) 특징
- 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 한다.
- 일관성(Consistency) : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 한다.
- 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
- 영속성(Durability) : 트랜잭션이 성공적으로 완료되었으면 결과는 영구적으로 반영되어야 한다.
3. 트랜잭션(Transaction) 연산
- 트랜잭션 작업에는 두 가지 명령어를 활용하는데, 바로 커밋(Commit)과 롤백(Rollback) 연산이다.
- 커밋(Commit) : 트랜잭션에 모든 작업이 정상적으로 이루어졌을 경우 변경사항을 한꺼번에 데이터베이스(DB)에 반영한다.
- 롤백(Rollback) : 어떤 작업 중 실패가 발생하면, 현재 트랜잭션의 모든 작업을 실행 전 상태로 되돌린다.
'DBMS' 카테고리의 다른 글
[DBMS] 데이터베이스(DataBase, DB) (0) | 2024.07.03 |
---|
댓글