트랜잭션

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
왜?
데이터베이스는 데이터의 일관성과 지속성을 보장해야 함. 이렇게 데이터베이스가 항상 정확하고일관된 상태를 유지할 수 있도록 다양한 기능을 제공하는 트랜잭션!
- 즉, 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위(데이터베이스가 수행된 일부 쿼리가 남지 않는 것)
ACID 성질
Atomicity(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함(all or nothing)
- 따라서, 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
Consistency(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환
- 트랜잭션 전에 일관성 있는 상태였다면, 트랜잭션 실행 후에도 일관성 있는 상태
Isolation(독립성,격리성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
Durablility(영속성,지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
👉 이 성질들을 만족해야 데이터의 무결성, 일관성을 보장할 수 있음. 따라서, 데이터베이스 시스템이 이 성질들을 만족하도록 기능을 제공
트랜잭션 관리를 위한 DBMS의 전략
데이터베이스에 저장된 데이터의 무결성은 매우 중요하다. 이를 보장하기 위해 DBMS는 다음 기능들을 지원한다.

TODO https://starkying.tistory.com/entry/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction%EC%9D%B4%EB%9E%80
연산
하나의 트랜잭션은 Commit되거나 Rollback
Commit
모든 작업이 성공적으로 처리되면, 모든 변경 내용을 한꺼번에 반영
Rollback
한 트랜잭션에 속하는 작업 중 단 하나라도 실패하면, 트랜잭션 전체가 실패한 것으로 간주하고 그 트랜잭션에서 데이터베이스를 변경한 내용을 전부 원래대로 되돌림
상태
