Greg Stark <gsstark@mit.edu> writes:
> It seems to me the only rational way to approach this is to have a per-table
> flag that sets that table to be non-logged. Essentially changing a table's
> behaviour to that of a temporary table except that other transactions can see
> it.
But what's the point? Nowhere in your scenario is there a reason why
we need to have multiple sessions working on the data being loaded.
So a temp table solves the problem perfectly. (Temp tables do span
transactions, just not sessions.)
I've got a fundamental philosophical objection to proposals in this
line, which I suppose I'd better state for the record. I don't like
inventing nonstandard SQL extensions or peculiar semantics just to gain
performance. It imposes extra complexity on users that they could do
without; the first time someone loses critical data because he didn't
fully understand the tradeoffs involved, he'll have a justifiable gripe.
I also don't like playing Oracle's or MySQL's game by inventing
proprietary syntax. We claim to believe in standards compliance, so we
should have a pretty high bar for inventing nonstandard syntax. When
the proposed change has a narrow use-case and is only going to yield
marginal improvements even in that case, I think we should just say no.
Bottom line: if we can't figure out how to do it transparently, I think
we haven't thought hard enough.
regards, tom lane