Re: Why overhead of SPI is so large?

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
Cc: "Tsunakawa, Takayuki" <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Why overhead of SPI is so large?
Date: 2019-08-22 15:56:46
Message-ID: CAFj8pRAzmE2uA6hV=5pib0NJPnRrO580_oR09BBCFs_oezyimA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

čt 22. 8. 2019 v 17:51 odesílatel Konstantin Knizhnik <
k(dot)knizhnik(at)postgrespro(dot)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.

Pavel

>
> Implementation
> time (ms)
> PL/v8
> 41550
> PL/Lua 32220
> PL/pgSQL 19808
> C/SPI 9406
> SQL 7399
> SQL (JIT)
> 5532
> С/coreAPI 2873
>
> --
> Konstantin Knizhnik
> Postgres Professional: http://www.postgrespro.com
> The Russian Postgres Company
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kohei KaiGai 2019-08-22 16:05:19 Re: Asymmetric partition-wise JOIN
Previous Message Konstantin Knizhnik 2019-08-22 15:51:15 Re: Why overhead of SPI is so large?