동시성 제어 사전지식
동시성 제어가 필요한 이유
동시성 제어 정의
동시성 제어(Concurrency Control)란, 여러 사용자나 프로세스가 데이터를 공유할 때 발생할 수 있는 문제를 해결하기 위해, 데이터베이스 시스템이 트랜잭션을 순서대로 실행하는 것이 아니라, 트랜잭션이 동시에 실행될 수 있도록 허용하면서도 데이터의 일관성과 무결성을 유지할 수 있도록 하는 기술이며, 데이터베이스 시스템에서 매우 중요한 개념 중 하나입니다.
동시성 제어의 목적
- 여러 사용자가 DB에 접근하더라도 데이터의 일관성을 보장하고 데이터의 무결성을 유지
- 위를 만족하며 데이터베이스 시스템의 성능과 효율성을 유지하는 것
- 분실된 갱신(Lost Update)
- 두개의 트랜잭션이 같은 데이터를 갱신하는 작업을 진행하게 되면서 하나의 작업이 진행되지 않는 경우
- 모순성(Inconsistency)
- 두개의 트랜잭션이 같은 데이터를 동시에 갱신하게되어 사용자가 원하는 결과와 일치하지 않은 상태가 되는 경우
- 연쇄복귀(Cascading Rollback)
- 두개의 트랜잭션이 같은 데이터를 갱신하는 작업을 진행하는 과정에서 하나의 트랜잭션이 실패하면 원자성에 의해 두 트랜잭션 모두 복귀하는 경우
- 비완료 의존성(Uncommitted Dependency)
- 한개의 트랜잭션이 실패하였을때, 이 트랜재션이 회복하기전에 다른 트랜잭션이 실패한 수행 결과를 참조하는 경우
동시성 제어 기법
Locking 기법
Timestamp 기법
Multi-Version Concurrency Control, MVCC
Optimistic Concurrency Control (OCC)
주차장 시스템을 구축할때 동시성 제어에 대한 고찰
주차장에서의 동시성 제어 기법