Optimistic Concurrency Control (OCC)는 동시성 제어 기법 중 하나로, 트랜잭션 충돌이 발생하지 않는다고 가정하고 트랜잭션 수행을 진행한 뒤, 커밋 전에 충돌 검사를 수행하여 데이터 일관성을 유지하는 방법입니다.
- OCC 방법은 트랜잭션 시작 시점에 버전 정보를 읽어와서, 해당 버전 정보를 사용하여 트랜잭션 수행을 진행합니다. 이 때, 다른 트랜잭션이 해당 데이터를 갱신하고 커밋한 경우, 해당 데이터의 버전 정보는 변경되기 때문에, 이를 감지할 수 있습니다.
- OCC 방법은 Locking 기법과는 달리, 트랜잭션이 커밋되기 전까지 다른 트랜잭션에 의해 Locking 되지 않으므로, 높은 처리량을 보장할 수 있습니다. 하지만, 충돌이 발생할 경우 Rollback을 수행하고 다시 트랜잭션을 수행해야 하므로, 오버헤드가 발생할 수 있습니다. 또한, 대부분의 트랜잭션 충돌이 발생하지 않을 때에만 효과적인 방법입니다.
주차장 시스템에서는 여러 클라이언트가 동시에 주차장의 상태를 변경하므로, 충돌이 일어날 가능성이 높습니다. 따라서 OCC 기법은 사용하지 않을 것 같습니다.