provided by: 
Originally published at Internet.comThe Waiting ... Is the Hardest Part
Please wait ... and wait and wait again. One of the nagging problems many databases can't seem to shake is that at some point a user is going to have to wait while someone else updates the system. Whether the database system is using table-level, page-level, column-level, or row-level locking, the same problem arises: readers (SELECTs) wait for writers (UPDATEs) to finish, and writers (UPDATEs) wait for readers (SELECTs) to finish.
PostgreSQL, the open source database that is often compared to most advanced commercial databases, has a mechanism called MVCC (MultiVersion Concurrency Control). MVCC has the ability to perform row-level locking as well as lock rows for writing in one session while giving access to these rows unaffected in another session. It's been said that MySQL, a lightweight open source database, has a version of MVCC, but the two aren't really comparable since MySQL can do only table locking for reading. This is one of the many instances where PostgreSQL has the upper hand.
With PostgreSQL, 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 MVCC in further detail...
Read article at Internet.com site