0

I have a PostgreSQL 10 cluster containing many databases, the total size is 500 Gb. I have launched the vacuumdb command using the analyze-in-stages option :

vacuumdb --all --verbose --analyze-in-stages

and I have seen in the output :

vacuumdb: processing database "db1": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "db2": Generating minimal optimizer statistics (1 target)
...
vacuumdb: processing database "dbN": Generating minimal optimizer statistics (1 targets)
vacuumdb: processing database "db1": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "db2": Generating medium optimizer statistics (10 targets)
...
vacuumdb: processing database "dbN": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "db1": Generating default (full) optimizer statistics
....

So I understand that the VACUUM is processing in stages: mininal, medium, default using a target but how is controled this "target" ? Which parameter is it ? Is there more stages as it is not yet terminated ?

Thank you in advance

1 Answers1

2

I have found an answer looking into the history of code : vacuumdb: Add option --analyze-in-stages

There are indeed 3 stages using this parameters :

  1. minimal : "SET default_statistics_target=1; SET vacuum_cost_delay=0;"
  2. medium : "SET default_statistics_target=10; RESET vacuum_cost_delay;"
  3. default (full) : "RESET default_statistics_target;"

ref. diff vacuumdb.c