InnoDB 스토리지 엔진의 잠금
MySQL에서 제공하는 잠금과 별개로 스토리지 엔진 내부에서 로우 단위의 잠금을 지원한다.
보통 명시적으로 잠금을 사용하는 경우는 드물고, 격리 수준에 따라 묵시적으로 잠금이 사용된다.
동시성 제어 방식에는 낙관적인 방식과 비관적인 방식이 있다.
InnoDB는 기본적으로 MVCC(다중 버전 동시성 제어)를 통해 낙관적인 방식을 사용하고 락을 통해 특정 상황에서 비관적인 방식을 사용한다.
낙관적 동시성 제어(OCC, Optimistic concurrency control)
트랜잭션이 서로 충돌하지 않는다고 가정하는 방식
비관적 동시성 제어(PCC, Pessimistic Concurrency Control)
트랜잭션이 충돌하는 가정하에 잠금을 거는 방식
일반적으로 Shared Lock, Exclusive Lock을 통해 이를 구현한다.
Shared & Exclusive Locks
InnoDB는 로우 단위의 잠금을 수행할 때 공유 잠금과 배타적 잠금을 사용한다.