RE: How to make partitioning scale better for larger numbers ofpartitions - Mailing list pgsql-hackers

From Kato, Sho
Subject RE: How to make partitioning scale better for larger numbers ofpartitions
Date
Msg-id 25C1C6B2E7BE044889E4FE8643A58BA963AAA7C7@G01JPEXMBKW03
Whole thread Raw
In response to Re: How to make partitioning scale better for larger numbers ofpartitions  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Responses Re: How to make partitioning scale better for larger numbers of partitions
List pgsql-hackers
On 2018/07/17 10:49, Amit Langote wrote:
>Perhaps, Kato-san only intended to report that the time that planner spends for a partitioned table with 1100
partitionsis just too high compared to the time it spends on a non-partitioned table.
 

yes, It is included for the purposes of this comparison.

The purpose of this comparison is to find where the partitioning bottleneck is.
Using the bottleneck as a hint of improvement, I'd like to bring the performance of partitioned table closer to the
performanceof unpartitioned table as much as possible.
 

-----Original Message-----
From: Amit Langote [mailto:Langote_Amit_f8@lab.ntt.co.jp] 
Sent: Tuesday, July 17, 2018 10:49 AM
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>; Kato, Sho/加藤 翔 <kato-sho@jp.fujitsu.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>; PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Subject: Re: How to make partitioning scale better for larger numbers of partitions

On 2018/07/13 22:10, Ashutosh Bapat wrote:
> On Fri, Jul 13, 2018 at 9:23 AM, Kato, Sho <kato-sho@jp.fujitsu.com> wrote:
>>> I wondered if you compared to PG10 or to inheritence-partitioning (parent with relkind='r' and either trigger or
ruleor >INSERT/UPDATE directly into child) ?
 
>>
>> Thank you for your reply.
>>
>> I compared to PG11beta2 with non-partitioned table.
>>
>> Non-partitioned table has 1100 records in one table.
>> Partitioned table has one record on each leaf partitions.
>>
> 
> I don't think partitioning should be employed this way even for the 
> sake of comparison. Depending upon the size of each tuple, 1100 tuples 
> are inserted into a single table, they will probably occupy few 
> hundred pages. In a partitioned table with one tuple per partition 
> they will occupy 1100 pages at least. There is other space, locking 
> overheads to maintain 1100 tables. I think the right way to compare is 
> to have really large that which really requires 1100 partitions and 
> then compare performance by putting that data in 1100 partitions and 
> in an unpartitioned table. Even with that kind of data, you will see 
> some difference in performance, but that won't be as dramatic as you 
> report.
> 
> I might be missing something though.

Perhaps, Kato-san only intended to report that the time that planner spends for a partitioned table with 1100
partitionsis just too high compared to the time it spends on a non-partitioned table.  It is and has been clear that
that'sbecause the planning time explodes as the number of partitions increases.
 

If there's lots of data in it, then the result will look completely different as you say, because scanning a single
partition(of the 1100
 
total) will spend less time than scanning a non-partitioned table containing 1100 partitions worth of data.  But the
planningtime would still be more for the partitioned table, which seems to be the point of this benchmark.
 

Thanks,
Amit




pgsql-hackers by date:

Previous
From: David Fetter
Date:
Subject: Re: Make foo=null a warning by default.
Next
From: Ashutosh Bapat
Date:
Subject: Re: How to make partitioning scale better for larger numbers of partitions