PostgreSQL은 **잠금(lock)**을 사용하여 동시 접근을 조정하고 충돌을 방지합니다. MVCC 덕분에 읽기는 일반적으로 잠금이 필요 없지만(읽기가 쓰기를 막지 않음), 쓰기는 행 수준 잠금을 획득하고, 다양한 잠금 타입이 작업을 조정합니다. 잠금을 이해하면 경합과 deadlock을 피하는 데 도움이 됩니다.
MVCC는 읽기가 보통 잠그지 않음을 의미
MVCC 덕분에 일반 SELECT는 행 잠금을 취하지 않음 — 일관된 스냅샷을 읽음.
→ 읽기가 쓰기를 막지 않고, 쓰기가 읽기를 막지 않음 (핵심 Postgres 장점).
잠금은 주로 쓰기와 명시적 잠금에서 작용.
행 수준 잠금 (쓰기와 명시적 잠금에서)
accounts balance balance id ;
;
accounts id ;
accounts balance ... id ;
;
