shared row locks
Shared row locks are a very important performance improvement for PostgreSQL’s implementation of referential integrity. PostgreSQL uses triggers to implement foreign keys, and thus it acquires locks using SQL statements. Before PostgreSQL 8.1, this meant the least restrictive lock it could acquire was a row exclusive lock (using a SELECT … FOR UPDATE statement). With 8.1, the developers added a method of acquiring a shared row lock via SQL (SELECT … FOR SHARE). This greatly reduces the locking contention in databases with lots of referential integrity.