Search
Duplicate
🛋️

Transactions & ACID

: 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위, 간단하게 질의어들을 사용하여 데이터베이스를 접근하는 것
: 작업의 단위는 질의어 한 문장이 아님, 작업단위는 많은 질의어 명령문들을 사람이 저하는 기준에 따라 정하는 것
⇒ 게시판을 예로 들었을 때, 게시글을 작성한 후(Insert), 작성된 게시글을 확인(Select)하는 것은 하나의 작업으로 취급되며 이를 하나의 트랜잭션이라 함

특징

: 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)
원자성은 트랜잭션이 데이터베이스에 모두 반영되거나 전혀 반영되지 않아아한다는 것
: 인간이 설계한 논리적인 작업의 단위로서 일처리는 작업 단위별로 이루어져야 사람이 다루기에 문제가 발생하지 않음
⇒ 트랜잭션 관리자가 관리
일관성은 트랜잭션의 작업 처리 결과가 항상 같아야한다는 것
: 트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 트랜잭션되는 것이 아닌, 처음 작업을 시작하기 전에 참조한 데이터로 진행되야 한다는 것
⇒ 무결성 제어기가 관리
독립성은 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어느 하나의 트랜잭션도 서로의 연산에 끼어들 수 없다는 것
: 하나의 트랜잭션이 완료될때까지 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없음
⇒ 병행제어 관리자가 관리
지속성은 트랜잭션이 성공적으로 완료된 경우, 결과는 영구적으로 반영되어야 한다는 점
⇒ 연관회복 관리자가 관리

트랜잭션의 Commit, Rollback 연산

Commit이란 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 끝났다라는 것을 알려주기위해 사용하는 연산
: 이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는것을 도와준다.
Rollback이란 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를
다시 취소 후에 사용자가 트랜잭션 처리된 단위대로 Rollback을 진행할 수도 있다.

동시성 제어

: 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
: DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭으로부터 Database를 보호하는 것을 의미
: 트랜잭션의 직렬화 수행을 보장
: 대부분의 DBMS는 동시성 제어 기법으로 MVCC를 사용하고 있음