PostgreSQLはロックを使用して同時実行アクセスを調整し、競合を防止します。MVCCのおかげで、読み取りは一般的にロックを必要としません(読み取り側はライター側をブロックしない)が、書き込みは行レベルのロックを取得し、様々なロック型が操作を調整します。ロック機構を理解することで、競合とデッドロックを回避できます。
MVCCは読み取りは通常ロックが不要
Because of MVCC, plain SELECTs do NOT take row locks — they read a consistent snapshot.
→ Readers don't block writers, writers don't block readers (a key Postgres advantage).
Locking mainly comes into play for WRITES and explicit locking.
行レベルロック(書き込みと明示的なロックから)
accounts balance balance id ;
;
accounts id ;
accounts balance ... id ;
;
