diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml
index 36f975b1e5b..34d72dba784 100644
--- a/doc/src/sgml/maintenance.sgml
+++ b/doc/src/sgml/maintenance.sgml
@@ -290,6 +290,15 @@
to meaningful statistical changes.
+
+ Tuples changed in partitions and inheritance children do not trigger
+ analyze on the parent table. If the parent table is empty or rarely
+ changed, it may never be processed by autovacuum, and the statistics for
+ the inheritance tree as a whole won't be collected. It is necessary to
+ run ANALYZE on the parent table manually in order to
+ keep the statistics up to date.
+
+
As with vacuuming for space recovery, frequent updates of statistics
are more useful for heavily-updated tables than for seldom-updated
@@ -347,6 +356,19 @@
ANALYZE commands on those tables on a suitable schedule.
+
+
+
+ The autovacuum daemon does not issue ANALYZE commands
+ for partitioned tables. Inheritance parents will only be analyzed if the
+ parent itself is changed - changes to child tables do not trigger
+ autoanalyze on the parent table. If your queries require statistics on
+ parent tables for proper planning, it is necessary to periodically run
+ a manual ANALYZE on those tables to keep the statistics
+ up to date.
+
+
+
@@ -819,6 +841,13 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
since the last ANALYZE.
+
+ Partitioned tables are not processed by autovacuum. Statistics
+ should be collected by running a manual ANALYZE when it is
+ first populated, and again whenever the distribution of data in its
+ partitions changes significantly.
+
+
Temporary tables cannot be accessed by autovacuum. Therefore,
appropriate vacuum and analyze operations should be performed via
diff --git a/doc/src/sgml/ref/analyze.sgml b/doc/src/sgml/ref/analyze.sgml
index c8fcebc1612..fe5461768e4 100644
--- a/doc/src/sgml/ref/analyze.sgml
+++ b/doc/src/sgml/ref/analyze.sgml
@@ -263,9 +263,35 @@ ANALYZE [ VERBOSE ] [ table_and_columns
- If any of the child tables are foreign tables whose foreign data wrappers
- do not support ANALYZE, those child tables are ignored while
- gathering inheritance statistics.
+ For partitioned tables, ANALYZE gathers statistics by
+ sampling rows from all partitions; in addition, it will recurse into each
+ partition and update its statistics. Each leaf partition is analyzed only
+ once, even with multi-level partitioning. No statistics are collected for
+ only the parent table (without data from its partitions), because with
+ partitioning it's guaranteed to be empty.
+
+
+
+ By constrast, if the table being analyzed has inheritance children,
+ ANALYZE gathers two sets of statistics: one on the rows
+ of the parent table only, and a second including rows of both the parent
+ table and all of its children. This second set of statistics is needed when
+ planning queries that process the inheritance tree as a whole. The child
+ tables themselves are not individually analyzed in this case.
+
+
+
+ The autovacuum daemon does not process partitioned tables, nor does it
+ process inheritance parents if only the children are ever modified.
+ It is usually necessary to periodically run a manual
+ ANALYZE to keep the statistics of the table hierarchy
+ up to date.
+
+
+
+ If any child tables or partitions are foreign tables whose foreign
+ data wrappers do not support ANALYZE, those tables are
+ ignored while gathering inheritance statistics.