Re: hyrax vs. RelationBuildPartitionDesc
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-15T18:18:04Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Thu, Mar 14, 2019 at 12:36 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Hmm, I wonder why not. I suppose the answer is that >> the leak is worse in HEAD than before, but how come? > I'd like to know that, too, but right now I don't. BTW, after closer study of 898e5e329 I have a theory as to why it made things worse for CCA animals: it causes relcache entries to be held open (via incremented refcounts) throughout planning, which they were not before. This means that, during each of the many RelationCacheInvalidate events that will occur during a planning cycle, we have to rebuild those relcache entries; previously they were just dropped once and that was the end of it till execution. You noted correctly that the existing PartitionDesc structure would generally get preserved during each reload --- but that has exactly zip to do with the amount of transient space consumed by execution of RelationBuildDesc. We still build a transient PartitionDesc that we then elect not to install. And besides that there's all the not-partitioning-related stuff that RelationBuildDesc can leak. This is probably largely irrelevant for non-CCA situations, since we don't expect forced relcache invals to occur often otherwise. But it seems to fit the facts, particularly that hyrax is only dying on queries that involve moderately large partitioning structures and hence quite a few relations pinned by PartitionDirectory entries. I remain of the opinion that we ought not have PartitionDirectories pinning relcache entries ... but this particular effect isn't really significant to that argument, I think. regards, tom lane
Commits
-
Load relcache entries' partitioning data on-demand, not immediately.
- 5b9312378e2f 13.0 landed
-
Prevent memory leaks associated with relcache rd_partcheck structures.
- d4c50b4b1f86 10.8 landed
- 5f1433ac5e7f 12.0 landed
- 089e4d405d0f 11.3 landed
-
Don't copy PartitionBoundInfo in set_relation_partition_info.
- c8151e642368 12.0 landed
-
Further reduce memory footprint of CLOBBER_CACHE_ALWAYS testing.
- d3f48dfae42f 12.0 landed
-
Fix some oversights in commit 2455ab488.
- de570047993b 12.0 landed
-
Defend against leaks into RelationBuildPartitionDesc.
- 2455ab48844c 12.0 landed
-
Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.
- 898e5e3290a7 12.0 cited