Re: SELECT DISTINCT chooses parallel seqscan instead of indexscan on huge table with 1000 partitions

From: Dimitrios Apostolou <jimis(at)gmx(dot)net>
To: David Rowley <dgrowleyml(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: SELECT DISTINCT chooses parallel seqscan instead of indexscan on huge table with 1000 partitions
Date: 2024-05-13 12:46:12
Message-ID: 8c923989-7944-d139-5ade-3d9f2588a11d@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, 13 May 2024, Dimitrios Apostolou wrote:

> On Sat, 11 May 2024, David Rowley wrote:
>
>> On Sat, 11 May 2024 at 13:11, Dimitrios Apostolou <jimis(at)gmx(dot)net> wrote:
>>> Indeed that's an awful estimate, the table has more than 1M of unique
>>> values in that column. Looking into pg_stat_user_tables, I can't see the
>>> partitions having been vacuum'd or analyzed at all. I think they should
>>> have been auto-analyzed, since they get a ton of INSERTs
>>> (no deletes/updates though) and I have the default autovacuum settings.
>>> Could it be that autovacuum starts, but never
>>> finishes? I can't find something in the logs.
>>
>> It's not the partitions getting analyzed you need to worry about for
>> an ndistinct estimate on the partitioned table. It's auto-analyze or
>> ANALYZE on the partitioned table itself that you should care about.
>>
>> If you look at [1], it says "Tuples changed in partitions and
>> inheritance children do not trigger analyze on the parent table."
>
> Thanks

Do I read that correctly, that I have to setup cron jobs to manually
analyze partitioned tables?

Dimitris

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David Rowley 2024-05-13 13:22:38 Re: SELECT DISTINCT chooses parallel seqscan instead of indexscan on huge table with 1000 partitions
Previous Message Dimitrios Apostolou 2024-05-13 12:41:05 Re: SELECT DISTINCT chooses parallel seqscan instead of indexscan on huge table with 1000 partitions