Re: Function runtime increases after 5 calls in the same session.
От | Marti Raudsepp |
---|---|
Тема | Re: Function runtime increases after 5 calls in the same session. |
Дата | |
Msg-id | CABRT9RDTp279tKSXTN0E8wH2UwJJKx9JGP-HTgrpHKFpBYid7g@mail.gmail.com обсуждение исходный текст |
Ответ на | Function runtime increases after 5 calls in the same session. ("Ilya I. Ashchepkov" <koctep@gmail.com>) |
Ответы |
Re: Function runtime increases after 5 calls in the same session.
|
Список | pgsql-general |
Hi On Tue, Oct 21, 2014 at 12:53 PM, Ilya I. Ashchepkov <koctep@gmail.com> wrote: > I wrote a function and during testing it I came across the strange > behaviour. > Function runtime is about 200ms first 5 times, 6th and futher calls takes > ~22000 ms. > I simplified my schema, you can see it in attached file. > I've tested on 9.4beta3 and 9.3.5. I didn't look at the test case. But most likely the problem is that after 5 executions, plancache decides that a generic plan is no more expensive than a custom plan, and reverts to executing the generic one. But in reality there is a big difference in execution time. See this for how the logic works: https://github.com/postgres/postgres/blob/master/src/backend/utils/cache/plancache.c#L1036 As a workaround you could use PL/pgSQL EXECUTE to run the query, which isn't subject to generic plans: http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN Regards, Marti
В списке pgsql-general по дате отправления: