From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Alastair McKinley <a(dot)mckinley(at)analyticsengines(dot)com>, "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Strange performance degregation in sql function (PG11.1) |
Date: | 2019-05-18 13:51:07 |
Message-ID: | af97ba23-f74e-64eb-7bb5-edbdbbf29bac@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 5/18/19 4:17 AM, Alastair McKinley wrote:
> Hi all,
>
> I recently experienced a performance degradation in an operational
> system that I can't explain. I had a function wrapper for a aggregate
> query that was performing well using the expected indexes with the
> approximate structure as shown below.
>
> create or replace function example_function(param1 int, param2 int)
> returns setof custom_type as
> $$
> select * from big_table where col1 = param1 and col2 = param2;
> $$ language sql;
>
> After creating two new indexes on this table to support a different use
> case during a migration, this unchanged function reduced in performance
Postgres version?
Was the migration from one Postgres version to another?
Did you run ANALYZE after migration?
More below.
> by several orders of magnitude. Running the query inside the function
> manually on the console however worked as expected and the query plan
> did not appear to have changed. On a hunch I changed the structure of
> the function to the structure below and immediately the query
> performance returned to the expected baseline.
Can you provide the EXPLAIN ANALYZE for each case. If you are worried
about the information revealed maybe use the anonymization available here:
Using EXECUTE will override the plan caching in plpgsql.
>
> create or replace function example_function(param1 int, param2 int)
> returns setof custom_type as
> $$
> BEGIN
> return query execute format($query$
> select * from big_table where col1 = %1$L and col2 = %1$
> $query$,param1,param2);
> END;
> $$ language plpgsql;
>
> The source data itself did not change during the time when I noticed
> this issue. Can anyone explain or guess what could have caused this
> degradation? The only other maintenance that I attempted was 'DISCARD
> PLANS;' which did not help.
>
> Best regards,
>
> Alastair
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2019-05-18 13:55:35 | Re: Loading table with indexed jsonb field is stalling |
Previous Message | Alastair McKinley | 2019-05-18 11:17:37 | Strange performance degregation in sql function (PG11.1) |