postgresql/src/include/storage
Michael Paquier 246a6c8f7b Make autovacuum more aggressive to remove orphaned temp tables
Commit dafa084, added in 10, made the removal of temporary orphaned
tables more aggressive.  This commit makes an extra step into the
aggressiveness by adding a flag in each backend's MyProc which tracks
down any temporary namespace currently in use.  The flag is set when the
namespace gets created and can be reset if the temporary namespace has
been created in a transaction or sub-transaction which is aborted.  The
flag value assignment is assumed to be atomic, so this can be done in a
lock-less fashion like other flags already present in PGPROC like
databaseId or backendId, still the fact that the temporary namespace and
table created are still locked until the transaction creating those
commits acts as a barrier for other backends.

This new flag gets used by autovacuum to discard more aggressively
orphaned tables by additionally checking for the database a backend is
connected to as well as its temporary namespace in-use, removing
orphaned temporary relations even if a backend reuses the same slot as
one which created temporary relations in a past session.

The base idea of this patch comes from Robert Haas, has been written in
its first version by Tsunakawa Takayuki, then heavily reviewed by me.

Author: Tsunakawa Takayuki
Reviewed-by: Michael Paquier, Kyotaro Horiguchi, Andres Freund
Discussion: https://postgr.es/m/0A3221C70F24FB45833433255569204D1F8A4DC6@G01JPEXMBYT05
Backpatch: 11-, as PGPROC gains a new flag and we don't want silent ABI
breakages on already released versions.
2018-08-13 11:49:04 +02:00
..
.gitignore When trace_lwlocks is used, identify individual lwlocks by name. 2015-09-11 14:01:39 -04:00
backendid.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
barrier.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
block.h Assorted minor doc/comment fixes. 2018-04-28 11:46:15 -04:00
buf.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
buf_internals.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
buffile.h Support parallel btree index builds. 2018-02-02 13:32:44 -05:00
bufmgr.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
bufpage.h Revert "Allow on-line enabling and disabling of data checksums" 2018-04-09 19:03:42 +02:00
checksum.h Revert "Allow on-line enabling and disabling of data checksums" 2018-04-09 19:03:42 +02:00
checksum_impl.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
condition_variable.h Allow ConditionVariable[PrepareTo]Sleep to auto-switch between CVs. 2018-01-09 11:39:10 -05:00
copydir.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
dsm.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
dsm_impl.h Remove dynamic_shared_memory_type=none 2018-07-10 18:35:24 +02:00
fd.h Fix some sloppiness in the new BufFileSize() and BufFileAppend() functions. 2018-05-02 17:23:13 +03:00
freespace.h Remove UpdateFreeSpaceMap(), use FreeSpaceMapVacuumRange() instead. 2018-03-29 12:22:44 -04:00
fsm_internals.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
indexfsm.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
ipc.h Fix crash when canceling parallel query 2018-02-16 16:21:24 -05:00
item.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
itemid.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
itemptr.h Improve representation of 'moved partitions' indicator on deleted tuples. 2018-05-01 13:30:12 -07:00
large_object.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
latch.h Fix misc typos, mostly in comments. 2018-07-18 16:17:32 +03:00
lmgr.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
lock.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
lockdefs.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
lwlock.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
off.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_sema.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_shmem.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pmsignal.h Add missing header include to pmsignal.h. 2018-08-02 12:14:22 +12:00
predicate.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
predicate_internals.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
proc.h Make autovacuum more aggressive to remove orphaned temp tables 2018-08-13 11:49:04 +02:00
procarray.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
proclist.h Improve error detection capability in proclists. 2018-01-08 18:07:04 -05:00
proclist_types.h Improve error detection capability in proclists. 2018-01-08 18:07:04 -05:00
procsignal.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
reinit.h Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
relfilenode.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
s_lock.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
sharedfileset.h Fix more wrong paths in header comments 2018-07-11 17:57:04 +03:00
shm_mq.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
shm_toc.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
shmem.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
sinval.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
sinvaladt.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
smgr.h Improve the performance of relation deletes during recovery. 2018-07-05 02:23:46 +09:00
spin.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
standby.h Remove AELs from subxids correctly on standby 2018-06-16 14:03:29 +01:00
standbydefs.h Fix bugs in vacuum of shared rels, by keeping their relcache entries current. 2018-06-12 11:13:21 -07:00