Transaction
TRANSACTION
데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위이다. 에러가 발생했을 때 트랜잭션에 포함된 모든 과정을 되돌릴 수 있어서 작업의 완전성을 보장해준다.
ACID
원자성(Atomicity)
전부 수행되거나 수행되지 않아야 한다
일관성(Consistency)
트랜잭션 수행 전후에 일관된 상태를 유지해야 한다
고립성(Isolation)
다른 트랜잭션이 끼어들어 수행을 방해하면 안된다
지속성(Durability)
수행을 성공적으로 완료하면 변경된 데이터를 영구히 저장해야한다.
동시성 제어(Concurrency Control)
동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다.
동시에 실행되는 트랜잭션들이 서로 간에 간섭함으로써 갱신 분실(lost update), 연쇄 복귀(cascading rollback) 또는 회복 불가능(Unrecoverability), 불일치 분석(inconsistent analysis) 등과 같은 문제들이 발생할 수 있다.
동시성 제어는 이러한 문제들을 방지하고 데이터의 무결성 및 일관성을 보장하기 때문에 다중사용자 DBMS에서 매우 중요하다.
Locking
여러 트랜잭션이 하나의 데이터에 동시에 접근하려 할 때 제어해주는 도구다.
공유락은 데이터를 읽기만 할 수 있는 것이고, 베타락은 데이터를 읽고 쓸 수 있는 것이다. 로킹단위에 따라 트랜잭션이 직렬화가 발생할 수 있고 데드락이 발생할 수 있다.
로킹 단위가 크면 그만큼 관리가 쉽지만 병행성이 떨어진다. 로킹단위가 작으면 관리가 어렵고 오버헤드가 증가하지만, 병행성이 올라간다.