In the pg_locks table, the 9 rows matching the blocked process ids only has one row in ShareLock mode whereas all the others are in ExclusiveLock mode. To focus on the former process, the following lines are output in the PostgreSQL log for the corresponding transaction. The interesting thing to notice is that the blocking query seems to be the first one in the list: UPDATE hardware SET secure_id=E'a0020000003K7XV', confidential=false, releases=ARRAY['8.04 LTS'], category=E'Server', certification=E'Compatibility', soft_lock_time=NULL, aliases='', canonical_id=E'200712-203', foo_time='2009-01-29 16:24:19.138842', make='Dell', related_hardware_id=313, model='PowerEdge 2900', website=E'', "timestamp"='2009-01-28 17:44:06', access_context_id=33, account_id=15, record_type_id=E'01220000000D1pE' WHERE hardware.id = 123 SELECT 1 FROM record_type WHERE record_type.secure_id = E'01220000000D1pE' SELECT record_type.description, record_type.name, record_type.sobject_type FROM record_type WHERE record_type.secure_id = E'01220000000D1pE' SELECT 1 FROM hardware WHERE hardware.id = 123 SELECT hardware.access_context_id, hardware.account_id, hardware.aliases, hardware.architecture, hardware.canonical_id, hardware.category, hardware.certification, hardware.confidential, hardware.foo_time, hardware.make, hardware.model, hardware.record_type_id, hardware.related_hardware_id, hardware.releases, hardware.secure_id, hardware.soft_lock_time, hardware."timestamp", hardware.website FROM hardware WHERE hardware.id = 123 UPDATE hardware SET foo_time='2009-01-29 16:24:22.664845' WHERE hardware.id = 123 UPDATE hardware SET foo_time='2009-01-29 16:24:23.162857' WHERE hardware.id = 123 SELECT 1 FROM account WHERE account.id = 15 SELECT account.access_context_id, account.billing_city, account.billing_country, account.billing_postal_code, account.billing_state, account.billing_street, account.fax, account.name, account.phone, account.record_type_id, account.secure_id, account."timestamp", account.type, account.website FROM account WHERE account.id = 15 SELECT 1 FROM hardware WHERE hardware.id = 313 SELECT DISTINCT hardware.access_context_id, hardware.account_id, hardware.aliases, hardware.canonical_id, hardware.category, hardware.certification, hardware.confidential, hardware.foo_time, hardware.id, hardware.make, hardware.model, hardware.record_type_id, hardware.related_hardware_id, hardware.releases, hardware.secure_id, hardware.soft_lock_time, hardware."timestamp", hardware.website FROM person JOIN person_account AS pa1 ON person.id = pa1.person_id JOIN person_account AS pa2 ON pa1.account_id = pa2.account_id JOIN hardware ON hardware.account_id = pa2.account_id WHERE hardware.id = 313 UPDATE hardware SET secure_id=E'a0020000008Lhxq', confidential=false, releases='{}', category=E'Server', certification=E'Compatibility', soft_lock_time=NULL, aliases='', canonical_id=E'200810-1008', foo_time=NULL, make='HP', related_hardware_id=NULL, model='ProLiant Bak', website=NULL, "timestamp"='2009-01-23 21:01:31', access_context_id=21, account_id=1, record_type_id=E'01220000000DIpN' WHERE hardware.id = 313 SELECT DISTINCT hardware.access_context_id, hardware.account_id, hardware.aliases, hardware.canonical_id, hardware.category, hardware.certification, hardware.confidential, hardware.foo_time, hardware.id, hardware.make, hardware.model, hardware.record_type_id, hardware.related_hardware_id, hardware.releases, hardware.secure_id, hardware.soft_lock_time, hardware."timestamp", hardware.website FROM person JOIN person_account AS pa1 ON person.id = pa1.person_id JOIN person_account AS pa2 ON pa1.account_id = pa2.account_id JOIN hardware ON hardware.account_id = pa2.account_id WHERE hardware.id = 313 SELECT COUNT(*) FROM certificate WHERE certificate.hardware_id = 123 SELECT certificate.completed, certificate.hardware_id, certificate.id, certificate.name, certificate.release, certificate.secure_id, certificate.status, certificate."timestamp" FROM certificate WHERE certificate.hardware_id = 123 ORDER BY certificate.name DESC LIMIT 1 OFFSET 0 SELECT DISTINCT hardware.access_context_id, hardware.account_id, hardware.aliases, hardware.canonical_id, hardware.category, hardware.certification, hardware.confidential, hardware.foo_time, hardware.id, hardware.make, hardware.model, hardware.record_type_id, hardware.related_hardware_id, hardware.releases, hardware.secure_id, hardware.soft_lock_time, hardware."timestamp", hardware.website FROM person JOIN person_account AS pa1 ON person.id = pa1.person_id JOIN person_account AS pa2 ON pa1.account_id = pa2.account_id JOIN hardware ON hardware.account_id = pa2.account_id WHERE hardware.id = 123