diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 48ad9f6..4ab0939 100644 *** a/doc/src/sgml/config.sgml --- b/doc/src/sgml/config.sgml *************** SET ENABLE_SEQSCAN TO OFF; *** 1966,1971 **** --- 1966,1994 ---- + + vacuum_defer_cleanup_age (integer) + + vacuum_defer_cleanup_age configuration parameter + + + + Specifies the number of transactions by which VACUUM and + HOT updates will defer cleanup of dead row versions. The + default is 0 transactions, meaning that dead row versions will be + removed as soon as possible. You may wish to set this to a non-zero + value when planning or maintaining a + configuration. The recommended value is 0 unless you have + clear reason to increase it. The purpose of the parameter is to + allow the user to specify an approximate time delay before cleanup + occurs. However, it should be noted that there is no direct link with + any specific time delay and so the results will be application and + installation specific, as well as variable over time, depending upon + the transaction rate (of writes only). + + + + *************** COPY postgres_log FROM '/full/path/to/lo *** 4407,4435 **** - - vacuum_defer_cleanup_age (integer) - - vacuum_defer_cleanup_age configuration parameter - - - - Specifies the number of transactions by which VACUUM and - HOT updates will defer cleanup of dead row versions. The - default is 0 transactions, meaning that dead row versions will be - removed as soon as possible. You may wish to set this to a non-zero - value when planning or maintaining a - configuration. The recommended value is 0 unless you have - clear reason to increase it. The purpose of the parameter is to - allow the user to specify an approximate time delay before cleanup - occurs. However, it should be noted that there is no direct link with - any specific time delay and so the results will be application and - installation specific, as well as variable over time, depending upon - the transaction rate (of writes only). - - - - bytea_output (enum) --- 4430,4435 ---- diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 6597e18..c56ac6a 100644 *** a/src/backend/utils/misc/guc.c --- b/src/backend/utils/misc/guc.c *************** const char *const config_group_names[] = *** 489,502 **** gettext_noop("Resource Usage / Memory"), /* RESOURCES_KERNEL */ gettext_noop("Resource Usage / Kernel Resources"), /* WAL */ gettext_noop("Write-Ahead Log"), /* WAL_SETTINGS */ gettext_noop("Write-Ahead Log / Settings"), /* WAL_CHECKPOINTS */ gettext_noop("Write-Ahead Log / Checkpoints"), /* WAL_REPLICATION */ ! gettext_noop("Write-Ahead Log / Replication"), /* QUERY_TUNING */ gettext_noop("Query Tuning"), /* QUERY_TUNING_METHOD */ --- 489,512 ---- gettext_noop("Resource Usage / Memory"), /* RESOURCES_KERNEL */ gettext_noop("Resource Usage / Kernel Resources"), + /* RESOURCES_VACUUM_DELAY */ + gettext_noop("Resource Usage / Cost-Based Vacuum Delay"), + /* RESOURCES_BGWRITER */ + gettext_noop("Resource Usage / Background Writer"), + /* RESOURCES_ASYNCHRONOUS */ + gettext_noop("Resource Usage / Asynchronous Behavior"), /* WAL */ gettext_noop("Write-Ahead Log"), /* WAL_SETTINGS */ gettext_noop("Write-Ahead Log / Settings"), /* WAL_CHECKPOINTS */ gettext_noop("Write-Ahead Log / Checkpoints"), + /* WAL_ARCHIVING */ + gettext_noop("Write-Ahead Log / Archiving"), + /* WAL_STANDBY_SERVERS */ + gettext_noop("Write-Ahead Log / Standby Servers"), /* WAL_REPLICATION */ ! gettext_noop("Write-Ahead Log / Streaming Replication"), /* QUERY_TUNING */ gettext_noop("Query Tuning"), /* QUERY_TUNING_METHOD */ *************** static struct config_bool ConfigureNames *** 1213,1219 **** }, { ! {"archive_mode", PGC_POSTMASTER, WAL_SETTINGS, gettext_noop("Allows archiving of WAL files using archive_command."), NULL }, --- 1223,1229 ---- }, { ! {"archive_mode", PGC_POSTMASTER, WAL_ARCHIVING, gettext_noop("Allows archiving of WAL files using archive_command."), NULL }, *************** static struct config_bool ConfigureNames *** 1222,1228 **** }, { ! {"hot_standby", PGC_POSTMASTER, WAL_SETTINGS, gettext_noop("Allows connections and queries during recovery."), NULL }, --- 1232,1238 ---- }, { ! {"hot_standby", PGC_POSTMASTER, WAL_STANDBY_SERVERS, gettext_noop("Allows connections and queries during recovery."), NULL }, *************** static struct config_bool ConfigureNames *** 1271,1277 **** static struct config_int ConfigureNamesInt[] = { { ! {"archive_timeout", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Forces a switch to the next xlog file if a " "new file has not been started within N seconds."), NULL, --- 1281,1287 ---- static struct config_int ConfigureNamesInt[] = { { ! {"archive_timeout", PGC_SIGHUP, WAL_ARCHIVING, gettext_noop("Forces a switch to the next xlog file if a " "new file has not been started within N seconds."), NULL, *************** static struct config_int ConfigureNamesI *** 1384,1390 **** }, { ! {"max_standby_delay", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Sets the maximum delay to avoid conflict processing on hot standby servers."), NULL, GUC_UNIT_MS --- 1394,1400 ---- }, { ! {"max_standby_delay", PGC_SIGHUP, WAL_STANDBY_SERVERS, gettext_noop("Sets the maximum delay to avoid conflict processing on hot standby servers."), NULL, GUC_UNIT_MS *************** static struct config_int ConfigureNamesI *** 1477,1483 **** }, { ! {"vacuum_cost_page_hit", PGC_USERSET, RESOURCES, gettext_noop("Vacuum cost for a page found in the buffer cache."), NULL }, --- 1487,1493 ---- }, { ! {"vacuum_cost_page_hit", PGC_USERSET, RESOURCES_VACUUM_DELAY, gettext_noop("Vacuum cost for a page found in the buffer cache."), NULL }, *************** static struct config_int ConfigureNamesI *** 1486,1492 **** }, { ! {"vacuum_cost_page_miss", PGC_USERSET, RESOURCES, gettext_noop("Vacuum cost for a page not found in the buffer cache."), NULL }, --- 1496,1502 ---- }, { ! {"vacuum_cost_page_miss", PGC_USERSET, RESOURCES_VACUUM_DELAY, gettext_noop("Vacuum cost for a page not found in the buffer cache."), NULL }, *************** static struct config_int ConfigureNamesI *** 1495,1501 **** }, { ! {"vacuum_cost_page_dirty", PGC_USERSET, RESOURCES, gettext_noop("Vacuum cost for a page dirtied by vacuum."), NULL }, --- 1505,1511 ---- }, { ! {"vacuum_cost_page_dirty", PGC_USERSET, RESOURCES_VACUUM_DELAY, gettext_noop("Vacuum cost for a page dirtied by vacuum."), NULL }, *************** static struct config_int ConfigureNamesI *** 1504,1510 **** }, { ! {"vacuum_cost_limit", PGC_USERSET, RESOURCES, gettext_noop("Vacuum cost amount available before napping."), NULL }, --- 1514,1520 ---- }, { ! {"vacuum_cost_limit", PGC_USERSET, RESOURCES_VACUUM_DELAY, gettext_noop("Vacuum cost amount available before napping."), NULL }, *************** static struct config_int ConfigureNamesI *** 1513,1519 **** }, { ! {"vacuum_cost_delay", PGC_USERSET, RESOURCES, gettext_noop("Vacuum cost delay in milliseconds."), NULL, GUC_UNIT_MS --- 1523,1529 ---- }, { ! {"vacuum_cost_delay", PGC_USERSET, RESOURCES_VACUUM_DELAY, gettext_noop("Vacuum cost delay in milliseconds."), NULL, GUC_UNIT_MS *************** static struct config_int ConfigureNamesI *** 1554,1560 **** * See also CheckRequiredParameterValues() if this parameter changes */ { ! {"max_prepared_transactions", PGC_POSTMASTER, RESOURCES, gettext_noop("Sets the maximum number of simultaneously prepared transactions."), NULL }, --- 1564,1570 ---- * See also CheckRequiredParameterValues() if this parameter changes */ { ! {"max_prepared_transactions", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Sets the maximum number of simultaneously prepared transactions."), NULL }, *************** static struct config_int ConfigureNamesI *** 1612,1618 **** }, { ! {"vacuum_defer_cleanup_age", PGC_USERSET, CLIENT_CONN_STATEMENT, gettext_noop("Age by which VACUUM and HOT cleanup should be deferred, if any."), NULL }, --- 1622,1628 ---- }, { ! {"vacuum_defer_cleanup_age", PGC_USERSET, WAL_STANDBY_SERVERS, gettext_noop("Age by which VACUUM and HOT cleanup should be deferred, if any."), NULL }, *************** static struct config_int ConfigureNamesI *** 1790,1796 **** }, { ! {"bgwriter_delay", PGC_SIGHUP, RESOURCES, gettext_noop("Background writer sleep time between rounds."), NULL, GUC_UNIT_MS --- 1800,1806 ---- }, { ! {"bgwriter_delay", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Background writer sleep time between rounds."), NULL, GUC_UNIT_MS *************** static struct config_int ConfigureNamesI *** 1800,1806 **** }, { ! {"bgwriter_lru_maxpages", PGC_SIGHUP, RESOURCES, gettext_noop("Background writer maximum number of LRU pages to flush per round."), NULL }, --- 1810,1816 ---- }, { ! {"bgwriter_lru_maxpages", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Background writer maximum number of LRU pages to flush per round."), NULL }, *************** static struct config_int ConfigureNamesI *** 1815,1821 **** #else PGC_INTERNAL, #endif ! RESOURCES, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), gettext_noop("For RAID arrays, this should be approximately the number of drive spindles in the array.") }, --- 1825,1831 ---- #else PGC_INTERNAL, #endif ! RESOURCES_ASYNCHRONOUS, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), gettext_noop("For RAID arrays, this should be approximately the number of drive spindles in the array.") }, *************** static struct config_real ConfigureNames *** 2143,2149 **** }, { ! {"bgwriter_lru_multiplier", PGC_SIGHUP, RESOURCES, gettext_noop("Multiple of the average buffer usage to free per round."), NULL }, --- 2153,2159 ---- }, { ! {"bgwriter_lru_multiplier", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Multiple of the average buffer usage to free per round."), NULL }, *************** static struct config_real ConfigureNames *** 2197,2203 **** static struct config_string ConfigureNamesString[] = { { ! {"archive_command", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Sets the shell command that will be called to archive a WAL file."), NULL }, --- 2207,2213 ---- static struct config_string ConfigureNamesString[] = { { ! {"archive_command", PGC_SIGHUP, WAL_ARCHIVING, gettext_noop("Sets the shell command that will be called to archive a WAL file."), NULL }, *************** static struct config_string ConfigureNam *** 2630,2636 **** #endif /* USE_SSL */ { ! {"application_name", PGC_USERSET, LOGGING, gettext_noop("Sets the application name to be reported in statistics and logs."), NULL, GUC_IS_NAME | GUC_REPORT | GUC_NOT_IN_SAMPLE --- 2640,2646 ---- #endif /* USE_SSL */ { ! {"application_name", PGC_USERSET, LOGGING_WHAT, gettext_noop("Sets the application name to be reported in statistics and logs."), NULL, GUC_IS_NAME | GUC_REPORT | GUC_NOT_IN_SAMPLE diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 94a4e69..5ea568a 100644 *** a/src/backend/utils/misc/postgresql.conf.sample --- b/src/backend/utils/misc/postgresql.conf.sample *************** *** 183,201 **** #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables ! # - Hot Standby - #hot_standby = off # allows queries during recovery #max_standby_delay = 30s # max acceptable lag to allow queries to # complete without conflict; -1 means forever #vacuum_defer_cleanup_age = 0 # num transactions by which cleanup is deferred - # - Replication - - - #max_wal_senders = 0 # max number of walsender processes - #wal_sender_delay = 200ms # 1-10000 milliseconds - #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables - #------------------------------------------------------------------------------ # QUERY TUNING --- 183,201 ---- #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables ! # - Streaming Replication - ! ! #max_wal_senders = 0 # max number of walsender processes ! #wal_sender_delay = 200ms # 1-10000 milliseconds ! #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables ! ! # - Standby Servers - #hot_standby = off # allows queries during recovery #max_standby_delay = 30s # max acceptable lag to allow queries to # complete without conflict; -1 means forever #vacuum_defer_cleanup_age = 0 # num transactions by which cleanup is deferred #------------------------------------------------------------------------------ # QUERY TUNING diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h index 4989fac..083f003 100644 *** a/src/include/utils/guc_tables.h --- b/src/include/utils/guc_tables.h *************** enum config_group *** 50,58 **** --- 50,63 ---- RESOURCES, RESOURCES_MEM, RESOURCES_KERNEL, + RESOURCES_VACUUM_DELAY, + RESOURCES_BGWRITER, + RESOURCES_ASYNCHRONOUS, WAL, WAL_SETTINGS, WAL_CHECKPOINTS, + WAL_ARCHIVING, + WAL_STANDBY_SERVERS, WAL_REPLICATION, QUERY_TUNING, QUERY_TUNING_METHOD,