Choose a default theme

You can change your theme from the menu

비관적 잠금

비관적 잠금은 충돌 가능성을 고려해 데이터에 접근할 때 잠금을 획득하고 다른 작업의 접근을 조정하는 방식이다.

원리

읽고 갱신할 행에 SELECT FOR UPDATE 같은 잠금을 사용하는 구현이 대표적이다. 잠금 종류와 유지 기간은 데이터베이스 및 트랜잭션 경계에 따른다.

예시

좌석 예약에서 한 행을 잠근 뒤 예약 가능 여부를 검사하고 갱신하면 같은 행의 경쟁 처리를 조정할 수 있다.

데이터베이스

관계형

MySQL · PostgreSQL · MariaDB · SQLite

NoSQL

Redis · MongoDB · Apache Cassandra

스토리지 엔진

InnoDB · RocksDB · MyRocks

주의할 점

오래 잠근 채 사용자 입력이나 외부 통신을 기다리면 대기와 교착 위험이 커진다. 잠금은 조건에 맞는 모든 업무 제약을 자동으로 보장하지 않는다.

참고 자료