RE: Big Performance drop of Exceptions in UDFs between V11.2 and 13.4

From: "ldh(at)laurent-hasson(dot)com" <ldh(at)laurent-hasson(dot)com>
To: Julien Rouhaud <rjuju123(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Justin Pryzby <pryzby(at)telsasoft(dot)com>, "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org>
Subject: RE: Big Performance drop of Exceptions in UDFs between V11.2 and 13.4
Date: 2021-08-30 16:04:04
Message-ID: MN2PR15MB25604A1E1EBBFDB13A736BB385CB9@MN2PR15MB2560.namprd15.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance


> I tried this scenario using edb's 13.3 x64 install:
>
> postgres=# select version();
> version
> ------------------------------------------------------------
> PostgreSQL 13.3, compiled by Visual C++ build 1914, 64-bit
> (1 row)
>
>
> postgres=# \l postgres
> List of databases
> Name | Owner | Encoding | Collate | Ctype | Access privileges
> ----------+----------+----------+---------+-------+-------------------
> postgres | postgres | UTF8 | C | C |
> (1 row)
>
> postgres=# explain (analyze,buffers,COSTS,TIMING) postgres-# select
> MAX(toFloat(a, null)) as "a" from sampletest;
> QUERY PLAN
> -----------------------------------------------------------------------------------------------------
> -------------------
> Aggregate (cost=2137.00..2137.01 rows=1 width=4) (actual
> time=44962.279..44962.280 rows=1 loops=1)
> Buffers: shared hit=657
> -> Seq Scan on sampletest (cost=0.00..1637.00 rows=100000
> width=15) (actual time=0.009..8.900 rows=100000 loops=1)
> Buffers: shared hit=637
> Planning:
> Buffers: shared hit=78
> Planning Time: 0.531 ms
> Execution Time: 44963.747 ms
> (8 rows)
>
> and with locally compiled REL_13_STABLE's head on the same machine:
>
> rjuju=# select version();
> version
> ------------------------------------------------------------
> PostgreSQL 13.4, compiled by Visual C++ build 1929, 64-bit
> (1 row)
>
> rjuju=# \l rjuju
> List of databases Name | Owner | Encoding | Collate |
> Ctype | Access privileges
> -------+-------+----------+---------+-------+-------------------
> rjuju | rjuju | UTF8 | C | C |
> (1 row)
>
> rjuju-# select MAX(toFloat(a, null)) as "a" from sampletest;
> QUERY PLAN
> -----------------------------------------------------------------------------------------------------
> ------------------
> Aggregate (cost=1477.84..1477.85 rows=1 width=4) (actual
> time=460.334..460.334 rows=1 loops=1)
> Buffers: shared hit=646 read=1
> -> Seq Scan on sampletest (cost=0.00..1197.56 rows=56056
> width=32) (actual time=0.010..7.612 rows=100000 loops=1)
> Buffers: shared hit=637
> Planning:
> Buffers: shared hit=20 read=1
> Planning Time: 0.125 ms
> Execution Time: 460.527 ms
> (8 rows)
>
> Note that I followed [1], so I simply used "build" and "install". I have no
> idea what is done by default and if NLS is included or not.
>
> So if default build on windows has NLS included, it probably means that
> either there's something specific on edb's build (I have no idea how their
> build is produced) or their version of msvc is responsible for that.
>
> [1]: https://www.postgresql.org/docs/current/install-windows-
> full.html#id-1.6.4.8.10

---------------------------------------------------------------------------------------------------------------------------------------------------

Hello,

So you are seeing a 100x difference.

> Execution Time: 44963.747 ms
> Execution Time: 460.527 ms

I see on https://www.postgresql.org/download/ that there is a different installer from 2ndQuadrant. I am going to try that one and see what I come up with. Are there any other "standard" distros of Postgres that I could try out?

Additionally, is there a DLL or EXE file that you could make available to me that I could simply patch on my current install and see if it makes any difference? Or a zip of the lib/bin folders? I found out I could download Visual Studio community edition so I am trying this, but may not have the time to get through a build any time soon as per my unfamiliarity with the process. I'll follow Ranier's steps and see if that gets me somewhere.

Thank you,
Laurent.

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Nagaraj Raj 2021-08-30 16:52:21 Re: pg_restore schema dump to schema with different name
Previous Message ldh@laurent-hasson.com 2021-08-30 04:20:38 RE: Big Performance drop of Exceptions in UDFs between V11.2 and 13.4 (workarounds)