Is the attribute options cache actually worth anything?

Lists: pgsql-hackers
From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Is the attribute options cache actually worth anything?
Date: 2011-03-01 18:15:34
Message-ID: 22987.1299003334@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

So while poking at a recent example from Marc Cousin (hundreds of tables
each with 1000 attributes) I observed that a simple ANALYZE would bloat
the backend process to the tune of several hundred megabytes. I think
there is a leak in CacheMemoryContext, but haven't tracked it down yet.
But I also noticed that tens of megabytes were disappearing into "Attopt
cache", and after reading the code to see what the heck that was, I am
wondering what the justification for having it is at all. In the
presumably normal case where the attribute hasn't got options, all it's
saving us is a syscache access, which is probably not noticeably more
expensive than the hash lookup. In the case where there is an option,
it's saving us an attribute_reloptions() call, but it's not apparent
to me that that's so expensive as to justify putting a cache in front
of it, especially not if we're going to do a palloc cycle anyway.

Did anybody do any performance measurements to demonstrate that this
code has a reason to live? Because if I don't see some, I'm going
to rip it out.

regards, tom lane


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Is the attribute options cache actually worth anything?
Date: 2011-03-01 18:29:12
Message-ID: AANLkTinJUSPR93bJuiNEsOx4gwjQw08MAMxYi2VmL-m_@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, Mar 1, 2011 at 1:15 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Did anybody do any performance measurements to demonstrate that this
> code has a reason to live?  Because if I don't see some, I'm going
> to rip it out.

No, I have to admit I didn't do that. Might be worth doing some
before you commit the rip-out, though.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Is the attribute options cache actually worth anything?
Date: 2011-09-05 16:56:33
Message-ID: 201109051656.p85GuXB15574@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Tom Lane wrote:
> So while poking at a recent example from Marc Cousin (hundreds of tables
> each with 1000 attributes) I observed that a simple ANALYZE would bloat
> the backend process to the tune of several hundred megabytes. I think
> there is a leak in CacheMemoryContext, but haven't tracked it down yet.
> But I also noticed that tens of megabytes were disappearing into "Attopt
> cache", and after reading the code to see what the heck that was, I am
> wondering what the justification for having it is at all. In the
> presumably normal case where the attribute hasn't got options, all it's
> saving us is a syscache access, which is probably not noticeably more
> expensive than the hash lookup. In the case where there is an option,
> it's saving us an attribute_reloptions() call, but it's not apparent
> to me that that's so expensive as to justify putting a cache in front
> of it, especially not if we're going to do a palloc cycle anyway.
>
> Did anybody do any performance measurements to demonstrate that this
> code has a reason to live? Because if I don't see some, I'm going
> to rip it out.

Did we decide to keep the cache in attoptcache.c? Is this a TODO?

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Is the attribute options cache actually worth anything?
Date: 2011-09-05 17:06:52
Message-ID: 9302.1315242412@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Bruce Momjian <bruce(at)momjian(dot)us> writes:
> Tom Lane wrote:
>> Did anybody do any performance measurements to demonstrate that this
>> code has a reason to live? Because if I don't see some, I'm going
>> to rip it out.

> Did we decide to keep the cache in attoptcache.c? Is this a TODO?

It's still a TODO, I think --- the code's still there, and nobody's done
any performance measurements either way.

regards, tom lane