RE: Temporary tables prevent autovacuum, leading to XID wraparound

Tsunakawa, Takayuki <tsunakawa.takay@jp.fujitsu.com>

From: "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
To: 'Michael Paquier' <michael.paquier@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-02-07T00:51:55Z
Lists: pgsql-hackers
From: Michael Paquier [mailto:michael.paquier@gmail.com]
> > postmaster deletes temporary relation files at startup by calling
> > RemovePgTempFiles() regardless of whether it's in recovery.  It
> > doesn't call that function during auto restart after a crash when
> > restart_after_crash is on.
> 
> The comment on top of RemovePgTempFiles() states the following:
>  * NOTE: we could, but don't, call this during a post-backend-crash restart
>  * cycle.  The argument for not doing it is that someone might want to
> examine
>  * the temp files for debugging purposes.  This does however mean that
>  * OpenTemporaryFile had better allow for collision with an existing temp
>  * file name.

Yes, I saw that comment.  postmaster keeps orphaned temp relation files only after a crash when restart_after_crash is on.


> Nice to hear that.  Please note that I did not check your patch, so I cannot
> conclude on its correctness in details.

I thought so.  Don't mind.

Regards
Takayuki Tsunakawa




Commits

  1. Clarify comment about assignment and reset of temp namespace ID in MyProc

  2. Make autovacuum more aggressive to remove orphaned temp tables

  3. Don't count background workers against a user's connection limit.