Thread: Horrible trigger performance after upgrade 8.0.12 -> 8.2.3

From:
Joseph S
Date:

After upgrading to 8.2.3 INSERTs and UPDATEs on one of my tables became
incredibly slow.  I traced the problem to one of my triggers that calls
one of my defined functions (that is IMMUTABLE).  If I inline the
function instead of calling it the runtime for my test update drops from
  10261.234 ms to 564.094 ms.  The time running the trigger itself
dropped from 9749.910 to 99.504.

BTW does make any sense to bother marking trigger functions as STABLE or
IMMUTABLE?

From:
Tom Lane
Date:

Joseph S <> writes:
> After upgrading to 8.2.3 INSERTs and UPDATEs on one of my tables became
> incredibly slow.  I traced the problem to one of my triggers that calls
> one of my defined functions (that is IMMUTABLE).  If I inline the
> function instead of calling it the runtime for my test update drops from
>   10261.234 ms to 564.094 ms.  The time running the trigger itself
> dropped from 9749.910 to 99.504.

With no more details than that, I don't see how you expect any useful
comments.  Let's see the code.  Also, what PG version are you comparing to?

> BTW does make any sense to bother marking trigger functions as STABLE or
> IMMUTABLE?

No, the trigger mechanisms don't pay any attention to that.  I can
hardly conceive of a useful trigger that wouldn't be VOLATILE anyway,
since side effects are more or less the point.

            regards, tom lane