Re: Why overhead of SPI is so large?

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: Why overhead of SPI is so large?
Дата
Msg-id CAFj8pRC=jQaKYQHRopvZtRKvyEr3uxcdT6PLORDs5o4hMu+Xhw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Why overhead of SPI is so large?  (Konstantin Knizhnik <k.knizhnik@postgrespro.ru>)
Ответы Re: Why overhead of SPI is so large?  (Konstantin Knizhnik <k.knizhnik@postgrespro.ru>)
Re: Why overhead of SPI is so large?  (David Fetter <david@fetter.org>)
Список pgsql-hackers


pá 23. 8. 2019 v 11:05 odesílatel Konstantin Knizhnik <k.knizhnik@postgrespro.ru> napsal:


On 22.08.2019 18:56, Pavel Stehule wrote:


čt 22. 8. 2019 v 17:51 odesílatel Konstantin Knizhnik <k.knizhnik@postgrespro.ru> napsal:
Some more information...
First of all I found out that marking PL/pgSQL function as immutable significantly increase speed of its execution:
19808 ms vs. 27594. It happens because exec_eval_simple_expr is taken snapshot if function is volatile (default).
I wonder if PL/pgSQL compiler can detect that evaluated expression itself is actually immutable  and there is no need to take snapshot
for each invocation of this function. Also I have tried yet another PL language - JavaScript, which is now new outsider, despite to the fact that
v8 JIT compiler is very good.

I have a plan to do some work in this direction. Snapshot is not necessary for almost buildin functions. If expr calls only buildin functions, then probably can be called without snapshot and without any work with plan cache.


I wonder if the following simple patch is correct?

You cannot to believe to user defined functions so immutable flag is correct. Only buildin functions are 100% correct.

CREATE OR REPLACE FUNCTION foo()
RETURNS int AS $$
SELECT count(*) FROM pg_class;
$$ LANGUAGE sql IMMUTABLE;

is working.

But your patch is good enough for benchmarking.

Pavel




-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Konstantin Knizhnik
Дата:
Сообщение: Re: Why overhead of SPI is so large?
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: pg_checksums --help synopsis is quite long