From 88b811044322845aabe8362d7f442a04b1c4dbc7 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 28 Aug 2006 13:37:18 +0000 Subject: [PATCH] Turn autovacuum on by default. (stats_row_level is also on by default.) Threshold and scale factor are cut in half for more aggressive behavior. --- doc/src/sgml/config.sgml | 15 ++++++++------- doc/src/sgml/maintenance.sgml | 10 ++++++---- src/backend/utils/misc/guc.c | 16 ++++++++-------- src/backend/utils/misc/postgresql.conf.sample | 14 +++++++------- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 11df226787..082efc9e7b 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ - + Server Configuration @@ -383,7 +383,7 @@ SET ENABLE_SEQSCAN TO OFF; - The default value is 2. The value must be less than the value of + The default value is 3. The value must be less than the value of max_connections. This parameter can only be set at server start. @@ -2990,7 +2990,8 @@ SELECT * FROM parent WHERE key = 2400; Enables the collection of row-level statistics on database - activity. This parameter is off by default. + activity. This parameter is on by default, because the autovacuum + daemon needs the collected information. Only superusers can change this setting. @@ -3113,7 +3114,7 @@ SELECT * FROM parent WHERE key = 2400; Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. - The default is 1000. + The default is 500. This parameter can only be set in the postgresql.conf file or on the server command line. This setting can be overridden for individual tables by entries in @@ -3131,7 +3132,7 @@ SELECT * FROM parent WHERE key = 2400; Specifies the minimum number of inserted, updated or deleted tuples needed to trigger an ANALYZE in any one table. - The default is 500. + The default is 250. This parameter can only be set in the postgresql.conf file or on the server command line. This setting can be overridden for individual tables by entries in @@ -3150,7 +3151,7 @@ SELECT * FROM parent WHERE key = 2400; Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM. - The default is 0.4. + The default is 0.2. This parameter can only be set in the postgresql.conf file or on the server command line. This setting can be overridden for individual tables by entries in @@ -3169,7 +3170,7 @@ SELECT * FROM parent WHERE key = 2400; Specifies a fraction of the table size to add to autovacuum_analyze_threshold when deciding whether to trigger an ANALYZE. - The default is 0.2. + The default is 0.1. This parameter can only be set in the postgresql.conf file or on the server command line. This setting can be overridden for individual tables by entries in diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 20a42c5b53..9eaa4ad6da 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -1,4 +1,4 @@ - + Routine Database Maintenance Tasks @@ -447,14 +447,14 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb". - The auto-vacuum daemon + The autovacuum daemon autovacuum general information - Beginning in PostgreSQL 8.1, there is a + There is a separate optional server process called the autovacuum daemon, whose purpose is to automate the execution of VACUUM and ANALYZE commands. @@ -465,7 +465,9 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb". linkend="guc-stats-start-collector"> and are set to true. Also, it's important to allow a slot for the autovacuum process when choosing - the value of . + the value of . In + the default configuration, autovacuuming is enabled and the related + configuration parameters are appropriately set. diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 208231ecd5..e6135bc8e7 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut . * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.343 2006/08/17 23:04:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.344 2006/08/28 13:37:18 petere Exp $ * *-------------------------------------------------------------------- */ @@ -707,7 +707,7 @@ static struct config_bool ConfigureNamesBool[] = NULL }, &pgstat_collect_tuplelevel, - false, NULL, NULL + true, NULL, NULL }, { {"stats_block_level", PGC_SUSET, STATS_COLLECTOR, @@ -744,7 +744,7 @@ static struct config_bool ConfigureNamesBool[] = NULL }, &autovacuum_start_daemon, - false, NULL, NULL + true, NULL, NULL }, { @@ -1138,7 +1138,7 @@ static struct config_int ConfigureNamesInt[] = NULL }, &ReservedBackends, - 2, 0, INT_MAX / 4, NULL, NULL + 3, 0, INT_MAX / 4, NULL, NULL }, { @@ -1563,7 +1563,7 @@ static struct config_int ConfigureNamesInt[] = NULL }, &autovacuum_vac_thresh, - 1000, 0, INT_MAX, NULL, NULL + 500, 0, INT_MAX, NULL, NULL }, { {"autovacuum_analyze_threshold", PGC_SIGHUP, AUTOVACUUM, @@ -1571,7 +1571,7 @@ static struct config_int ConfigureNamesInt[] = NULL }, &autovacuum_anl_thresh, - 500, 0, INT_MAX, NULL, NULL + 250, 0, INT_MAX, NULL, NULL }, { @@ -1726,7 +1726,7 @@ static struct config_real ConfigureNamesReal[] = NULL }, &autovacuum_vac_scale, - 0.4, 0.0, 100.0, NULL, NULL + 0.2, 0.0, 100.0, NULL, NULL }, { {"autovacuum_analyze_scale_factor", PGC_SIGHUP, AUTOVACUUM, @@ -1734,7 +1734,7 @@ static struct config_real ConfigureNamesReal[] = NULL }, &autovacuum_anl_scale, - 0.2, 0.0, 100.0, NULL, NULL + 0.1, 0.0, 100.0, NULL, NULL }, /* End-of-list marker */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index fcb81d7118..2793b1e70d 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -59,7 +59,7 @@ # Note: increasing max_connections costs ~400 bytes of shared memory per # connection slot, plus lock space (see max_locks_per_transaction). You # might also need to raise shared_buffers to support more connections. -#superuser_reserved_connections = 2 # (change requires restart) +#superuser_reserved_connections = 3 # (change requires restart) #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # octal @@ -345,7 +345,7 @@ #stats_start_collector = on # needed for block or row stats # (change requires restart) #stats_block_level = off -#stats_row_level = off +#stats_row_level = on #stats_reset_on_server_start = off # (change requires restart) @@ -361,15 +361,15 @@ # AUTOVACUUM PARAMETERS #--------------------------------------------------------------------------- -#autovacuum = off # enable autovacuum subprocess? +#autovacuum = on # enable autovacuum subprocess? #autovacuum_naptime = 60 # time between autovacuum runs, in secs -#autovacuum_vacuum_threshold = 1000 # min # of tuple updates before +#autovacuum_vacuum_threshold = 500 # min # of tuple updates before # vacuum -#autovacuum_analyze_threshold = 500 # min # of tuple updates before +#autovacuum_analyze_threshold = 250 # min # of tuple updates before # analyze -#autovacuum_vacuum_scale_factor = 0.4 # fraction of rel size before +#autovacuum_vacuum_scale_factor = 0.2 # fraction of rel size before # vacuum -#autovacuum_analyze_scale_factor = 0.2 # fraction of rel size before +#autovacuum_analyze_scale_factor = 0.1 # fraction of rel size before # analyze #autovacuum_vacuum_cost_delay = -1 # default vacuum cost delay for # autovac, -1 means use