Tom Lane wrote:
>
> Hannu Krosing <hannu@tm.ee> writes:
> > I have a question about performance issues related to temporary tables.
> > IIRC temporary tables were implemented as ordinary tables with some
> > pre/post-processing to give them unique names so that they would not
> > clash with similar-named tables from other sessions.
>
> Right, there's basically no performance difference at all from ordinary
> tables.
>
> It'd be possible to have them go through the "local buffer manager"
> for their entire lives, rather than only for the transaction in which
> they are created, as happens for ordinary tables. This would avoid
> at least some shared-buffer-manipulation overhead. I'm not sure it'd
> buy a whole lot, but it probably wouldn't take much work to make it
> happen, either.
I was hoping that at least fsync()'s could be avoided on temp tables
even without -F.
Other kinds of improvemants should be possible too, due to the
essentially non-transactional nature of temp tables.
> I think it would be folly to try to make them use a different smgr or
> avoid WAL; that'd require propagating differences between ordinary and
> temp tables into way too many places.
Does using a different storage manager really need propagating
differences
in other places than the storage manager code ?
In an ideal world it should not be so ;)
-----------
Hannu