Hello,
I reconsidered a way based on the v5 patch in line with
Horiguchi-san's comment.
This approach is as follows:
- A partitioned table is checked whether it needs analyze like a plain
table in relation_needs_vacanalyze(). To do this, we should store
partitioned table's stats (changes_since_analyze).
- Partitioned table's changes_since_analyze is updated when
analyze a leaf partition by propagating its changes_since_analyze.
In the next scheduled analyze time, it is used in the above process.
That is, the partitioned table is analyzed behind leaf partitions.
- The propagation process differs between autoanalyze or plain analyze.
In autoanalyze, a leaf partition's changes_since_analyze is propagated
to *all* ancestors. Whereas, in plain analyze on an inheritance tree,
propagates to ancestors not included the tree to avoid needless counting.
Attach the latest patch to this email.
Could you check it again please?
--
Best regards,
Yuzuko Hosoya
NTT Open Source Software Center