Joseph Mitchell outlines a way that PostgreSQL users can work
around the lack of a pure "no-locking" capability.
"Question of the day: what's the single most annoying thing
about most large multi-user databases? As anyone who's worked with
one knows, it's waiting. And waiting. Whether the database system
is using table-level, page-level, column-level, or row-level
locking, the same annoying problem persists: readers (SELECTs) wait
for writers (UPDATEs) to finish, and writers (UPDATEs) wait for
readers (SELECTs) to finish. 'My kingdom,' they cry, 'for a
database with 'no-locking' capability!'"
"For PostgreSQL, 'no-locking' is already a reality. Readers
never wait for writers, and writers never wait for readers. I can
already hear the objections to the claim that there is no
"no-locking" in PostgreSQL, so let me explain PostgreSQL's advanced
technique called Multi-Version Concurrency Control (MVCC)."