Storage & Databases

Optimistic concurrency

Read freely; check for conflicts at commit; retry if conflict.


In plain terms

Postgres serializable level uses it (SSI). Better than locks under low contention; degrades to busy-waiting at high contention.

Origin

Kung and Robinson, "On Optimistic Methods for Concurrency Control," ACM TODS 1981. Postgres SERIALIZABLE uses SSI (Cahill et al., 2008) — the canonical production implementation.

Where it shows up in production
  • PostgreSQL SERIALIZABLE Uses Serializable Snapshot Isolation — track read/write conflicts at commit, abort the loser.
  • CouchDB / MongoDB versioned writes Client passes the version it read; server rejects on mismatch.
  • HTTP ETag / If-Match The HTTP analogue — conditional PUT with the version you read.
Sources & further reading
Found this useful?