Re: Speeding up INSERTs and UPDATEs to partitioned tables

From: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
To: Krzysztof Nienartowicz <krzysztof(dot)nienartowicz(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Speeding up INSERTs and UPDATEs to partitioned tables
Date: 2018-10-23 02:02:02
Message-ID: CAKJS1f9tUaidrYCb4=Qk1UBUfvtKiDiD+5_Wia0V-=9FH-YUeQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 23 October 2018 at 11:55, Krzysztof Nienartowicz
<krzysztof(dot)nienartowicz(at)gmail(dot)com> wrote:
> In the end we hacked the code to re-enable triggers on partitioned
> tables and switch off native insert code on partitioned tables. Quite
> hackish and would be nice to have it fixed in a more natural manner.
> Yes, it looked like locking but not only -
> ExecSetupPartitionTupleRouting: ExecOpenIndices/find_all_inheritors
> looked like dominant and also convert_tuples_by_name but not sure if
> the last one was not an artifact of perf sampling.

The ExecOpenIndices was likely fixed in edd44738bc8 (PG11).
find_all_inheritors does obtain the partition locks during the call,
so the slowness there most likely down to the locking rather than the
scanning of pg_inherits.

42f70cd9c3dbf improved the situation for convert_tuples_by_name (PG12).

> Will check the patch 0001, thanks.

I more meant that it might be 0002 that fixes the issue for you. I
just wanted to check if you'd tried 0001 and found that the problem
was fixed with that alone.

Do you mind sharing how many partitions you have and how many columns
the partitioned table has?

--
David Rowley http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ioseph Kim 2018-10-23 02:41:08 Re: [HACKERS] Fix number skipping in to_number
Previous Message Amit Langote 2018-10-23 02:00:56 Re: BUG #15448: server process (PID 22656) was terminated by exception 0xC0000005