Re: Autovacuum on partitioned table - Mailing list pgsql-hackers

From yuzuko
Subject Re: Autovacuum on partitioned table
Date
Msg-id CAKkQ50-bwFEDMBGb1JmDXffXsiU8xk-hN6kJK9CKjdBa7r=Hdw@mail.gmail.com
Whole thread Raw
In response to Re: Autovacuum on partitioned table  (Amit Langote <amitlangote09@gmail.com>)
Responses Re: Autovacuum on partitioned table
List pgsql-hackers
Hello,

Thank you for reviewing.

> > > +      */
> > > +     if (IsAutoVacuumWorkerProcess() &&
> > > +             rel->rd_rel->relispartition &&
> > > +             !(rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE))
> >
> > I'm not sure I understand why we do this only on autovac. Why not all
> > analyzes?
>
> +1.  If there is a reason, it should at least be documented in the
> comment above.
>
When we analyze partitioned table by ANALYZE command,
all inheritors including partitioned table are analyzed
at the same time.  In this case, if we call pgstat_report_partanalyze,
partitioned table's changes_since_analyze is updated
according to the number of analyzed tuples of partitions
as follows.  But I think it should be 0.

\d+ p
                               Partitioned table "public.p"
 Column |  Type   | Collation | Nullable | Default | Storage | Stats
target | Description
--------+---------+-----------+----------+---------+---------+--------------+-------------
 i      | integer |           |          |         | plain   |              |
Partition key: RANGE (i)
Partitions: p_1 FOR VALUES FROM (0) TO (100),
                 p_2 FOR VALUES FROM (100) TO (200)

insert into p select * from generate_series(0,199);
INSERT 0 200

(before analyze)
-[ RECORD 1 ]-------+------------------
relname             | p
n_mod_since_analyze | 0
-[ RECORD 2 ]-------+------------------
relname             | p_1
n_mod_since_analyze | 100
-[ RECORD 3 ]-------+------------------
relname             | p_2
n_mod_since_analyze | 100

(after analyze)
-[ RECORD 1 ]-------+------------------
relname             | p
n_mod_since_analyze | 200
-[ RECORD 2 ]-------+------------------
relname             | p_1
n_mod_since_analyze | 0
-[ RECORD 3 ]-------+------------------
relname             | p_2
n_mod_since_analyze | 0


I think if we analyze partition tree in order from leaf partitions
to root table, this problem can be fixed.
What do you think about it?

-- 
Best regards,
Yuzuko Hosoya
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: pg_ls_tmpdir to show directories and shared filesets (andpg_ls_*)
Next
From: "曾文旌(义从)"
Date:
Subject: Re: [Proposal] Global temporary tables