Lock ( 데이터베이스 락 ) 이란?
세션1이 트렌젝션을 시작하고 데이터를 수정하는 동안 아직 커밋을 수행하지 않았는데, 세션2에서 동시에 같은 데이터를 수정하게 되면 여러가지 문제가 발생한다.
이런문제를 방지하기 위해, 세션이 트렌젝션을 시작하고 데이터를 수정하는 동안에 커밋이나 롤백 전까지 다른세션에서 해당 데이터를 수정할 수 없게 막아야 한다. 이런 문제를 해결하기 위해 DB에서는 LOCK 락 이라는 개념을 제공한다.
동시성 제어(Concurrency Control)란, 여러 사용자나 프로세스가 데이터를 공유할 때 발생할 수 있는 문제를 해결하기 위해, 데이터베이스 시스템이 트랜잭션을 순서대로 실행하는 것이 아니라, 트랜잭션이 동시에 실행될 수 있도록 허용하면서도 데이터의 일관성과 무결성을 유지할 수 있도록 하는 기술이며, 데이터베이스 시스템에서 매우 중요한 개념 중 하나이다.
공유 잠금 (shared lock/s-lock): 데이터를 읽을 때 사용하는 락
배타 잠금 (exclusive lock/x-lock): 데이터를 변경할 때 사용하는 락
추가) 교착상태 (deadlock)
낙관적 락 (optimistic lock)
비관적 락 (pessimistic lock)
낙관적 락 vs. 비관적 락
분산락 (distributed lock)
스핀락 (spin lock)