"kop@meme.com" <kop@meme.com> wrote:
> I found that after running a large transaction (for days, it's still
> running) and then running out of shared memory that pg_locks reports locks
> held by pids that do not seem to exist, either in ps output or in
> pg_stat_activity.
That is not a bug. For details see either of the below links:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/storage/lmgr/README-SSI;hb=masterhttp://vldb.org/pvldb/vol5/p1850_danrkports_vldb2012.pdf
The short explanation is that SIReadLocks on a serializable
transaction may need to be kept until overlapping transactions
terminate. You can minimize this by flagging transactions which
will not modify data as READ ONLY. If a READ ONLY transaction is
expected to run for a very long time, it is wise to also flag it as
DEFERRABLE.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company