Обсуждение: The first function call

Поиск
Список
Период
Сортировка

The first function call

От
Diego Silva e Silva
Дата:
Hello,

The first function call is 10 times slower than the other calls in the same session. Is it possible to shorten this long time on the first call?
For example. Call my function for once, this call returns at 70ms on the next call, the return is at 7ms.

thanks.

Re: The first function call

От
Tom Lane
Дата:
Diego Silva e Silva <diegogrv@gmail.com> writes:
> The first function call is 10 times slower than the other calls in the same
> session. Is it possible to shorten this long time on the first call?
> For example. Call my function for once, this call returns at 70ms on the
> next call, the return is at 7ms.

The first few operations in a new session are necessarily going to be
slower than later ones, because of the need to populate internal caches
etc.  If your function is written in a PL you might be able to shave
some time off by preloading the PL's shared library (see
shared_preload_libraries), but that will only go so far.  The real
solution to this class of complaints is generally "use a connection
pooler".

            regards, tom lane


Re: The first function call

От
"David G. Johnston"
Дата:
On Thu, Jan 11, 2018 at 8:52 AM, Diego Silva e Silva <diegogrv@gmail.com> wrote:
Hello,

The first function call is 10 times slower than the other calls in the same session. Is it possible to shorten this long time on the first call?
For example. Call my function for once, this call returns at 70ms on the next call, the return is at 7ms.


You would need to provide considerably more detail about the function to receive any useful suggestions - there is no magic switch that you can throw to gain the benefits of caching.  Session pooling is usually the first solution to at least minimize how often the cache goes away.

David J.
P.S. ​This is not an on-topic question for the -hackers list, -general is a better location.