From c969fed7ecd54be6aca27e68a58efb57b2753ba2 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 21 Sep 2001 03:32:36 +0000 Subject: [PATCH] Give VACUUM its own GUC parameter for memory usage, rather than piggybacking on SortMem. Add documentation for some recently-added GUC parameters that had so far escaped it. --- doc/src/sgml/runtime.sgml | 71 ++++++++++++++++++- src/backend/commands/vacuumlazy.c | 12 ++-- src/backend/utils/init/globals.c | 3 +- src/backend/utils/misc/guc.c | 12 ++-- src/backend/utils/misc/postgresql.conf.sample | 6 +- src/bin/psql/tab-complete.c | 11 ++- src/include/miscadmin.h | 3 +- 7 files changed, 97 insertions(+), 21 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index eef78e17a3..55034494dc 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -780,6 +780,45 @@ env PGOPTIONS='-c geqo=off' psql + + COLLECT_STARTCOLLECTOR (boolean) + + + Controls whether the postmaster should start the statistics-collection + subprocess. This is on by default, but may be turned off if you + know you have no interest in collecting statistics. This option + can only be set at postmaster start. + + + + + + COLLECT_RESETONPMSTART (boolean) + + + If on, collected statistics are zeroed out whenever the postmaster + is restarted. If off, statistics are accumulated across postmaster + restarts. The default is on. This option + can only be set at postmaster start. + + + + + + COLLECT_QUERYSTRING (boolean) + COLLECT_BLOCKLEVEL (boolean) + COLLECT_TUPLELEVEL (boolean) + + + These flags determine what information backends send to the statistics + collector process: current queries, block-level activity statistics, + or tuple-level activity statistics. All default to off. Enabling + statistics collection costs a small amount of time per query, but + is invaluable for debugging and performance tuning. + + + + DEBUG_ASSERTIONS (boolean) @@ -1013,7 +1052,7 @@ env PGOPTIONS='-c geqo=off' psql transaction isolation level - DEFAUL_TRANSACTION_ISOLATION (string) + DEFAULT_TRANSACTION_ISOLATION (string) Each SQL transaction has an isolation level, which can be @@ -1201,6 +1240,19 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' + + PASSWORD_ENCRYPTION (boolean) + + + When a password is specified in CREATE USER or + ALTER USER without writing either ENCRYPTED or + UNENCRYPTED, this flag determines whether the password is encrypted. + The default is off (do not encrypt the password), but this choice + may change in a future release. + + + + TRANSFORM_NULL_EQUALS (boolean) @@ -1285,7 +1337,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' Specifies the amount of memory to be used by internal sorts - and hashes before resorting to temporary disk files. The value + and hashes before switching to temporary disk files. The value is specified in kilobytes, and defaults to 512 kilobytes. Note that for a complex query, several sorts and/or hashes might be running in parallel, and each one will be allowed to use as @@ -1403,6 +1455,19 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' + + VACUUM_MEM (integer) + + + Specifies the maximum amount of memory to be used by + VACUUM to keep track of to-be-reclaimed tuples. + The value is specified in kilobytes, and defaults to 8192 kilobytes. + Larger settings may improve the speed of vacuuming large tables + that have many deleted tuples. + + + + VIRTUAL_HOST (string) diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index 8351da5e7d..3685217fb7 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -10,7 +10,7 @@ * relations with finite memory space usage. To do that, we set upper bounds * on the number of tuples and pages we will keep track of at once. * - * We are willing to use at most SortMem memory space to keep track of + * We are willing to use at most VacuumMem memory space to keep track of * dead tuples. We initially allocate an array of TIDs of that size. * If the array threatens to overflow, we suspend the heap scan phase * and perform a pass of index cleanup and page compaction, then resume @@ -31,7 +31,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.6 2001/09/04 19:12:05 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.7 2001/09/21 03:32:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -865,8 +865,6 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats) * lazy_space_alloc - space allocation decisions for lazy vacuum * * See the comments at the head of this file for rationale. - * - * XXX Should we have our own GUC parameter, instead of using SortMem? */ static void lazy_space_alloc(LVRelStats *vacrelstats, BlockNumber relblocks) @@ -874,8 +872,8 @@ lazy_space_alloc(LVRelStats *vacrelstats, BlockNumber relblocks) int maxtuples; int maxpages; - maxtuples = (int) ((SortMem * 1024L) / sizeof(ItemPointerData)); - /* stay sane if small SortMem */ + maxtuples = (int) ((VacuumMem * 1024L) / sizeof(ItemPointerData)); + /* stay sane if small VacuumMem */ if (maxtuples < MAX_TUPLES_PER_PAGE) maxtuples = MAX_TUPLES_PER_PAGE; @@ -910,7 +908,7 @@ lazy_record_dead_tuple(LVRelStats *vacrelstats, { /* * The array shouldn't overflow under normal behavior, - * but perhaps it could if we are given a really small SortMem. + * but perhaps it could if we are given a really small VacuumMem. * In that case, just forget the last few tuples. */ if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples) diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index 935340ea01..3a5ddee7bb 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.59 2001/08/25 18:52:42 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.60 2001/09/21 03:32:35 tgl Exp $ * * NOTES * Globals used all over the place should be declared here and not @@ -82,6 +82,7 @@ char FloatFormat[20] = "%f"; bool enableFsync = true; bool allowSystemTableMods = false; int SortMem = 512; +int VacuumMem = 8192; int NBuffers = DEF_NBUFFERS; diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index ebb7745347..5a5dcac47a 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -4,7 +4,7 @@ * Support for grand unified configuration scheme, including SET * command, configuration file, and command line options. * - * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.49 2001/09/20 14:20:27 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.50 2001/09/21 03:32:35 tgl Exp $ * * Copyright 2000 by PostgreSQL Global Development Group * Written by Peter Eisentraut . @@ -176,12 +176,11 @@ struct config_string * * 4. Add a record below. * - * 5. Add it to postgresql.conf.sample + * 5. Add it to src/backend/utils/misc/postgresql.conf.sample. * - * 6. Don't forget to document that option. - * - * WHEN MAKING MODIFICATIONS, remember to update postgresql.conf.sample + * 6. Add it to src/bin/psql/tab-complete.c, if it's a USERSET option. * + * 7. Don't forget to document the option. */ @@ -298,6 +297,9 @@ static struct config_int {"sort_mem", PGC_USERSET, &SortMem, 512, 4*BLCKSZ/1024, INT_MAX, NULL, NULL}, + {"vacuum_mem", PGC_USERSET, &VacuumMem, + 8192, 1024, INT_MAX, NULL, NULL}, + {"debug_level", PGC_USERSET, &DebugLvl, 0, 0, 16, NULL, NULL}, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 8faf8304eb..c39e31d748 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -53,7 +53,8 @@ # # Performance # -#sort_mem = 512 +#sort_mem = 512 # min 32 +#vacuum_mem = 8192 # min 1024 #fsync = true @@ -173,10 +174,11 @@ # # Misc # +#dynamic_library_path = '$libdir' #australian_timezones = false #deadlock_timeout = 1000 #default_transaction_isolation = 'read committed' #max_expr_depth = 10000 # min 10 #password_encryption = false #sql_inheritance = true - +#transform_null_equals = false diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index bbc09a599c..c76d9c807a 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.37 2001/09/07 01:24:18 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.38 2001/09/21 03:32:36 tgl Exp $ */ /*---------------------------------------------------------------------- @@ -226,8 +226,8 @@ psql_completion(char *text, int start, int end) "enable_nestloop", "enable_mergejoin", "enable_hashjoin", - "geqo", "ksqo", + "geqo", "fsync", "debug_assertions", "debug_print_query", @@ -241,6 +241,9 @@ psql_completion(char *text, int start, int end) "show_query_stats", "trace_notify", "sql_inheritance", + "australian_timezones", + "password_encryption", + "transform_null_equals", "geqo_threshold", "geqo_pool_size", @@ -248,6 +251,7 @@ psql_completion(char *text, int start, int end) "geqo_generations", "geqo_random_seed", "sort_mem", + "vacuum_mem", "debug_level", "max_expr_depth", "commit_delay", @@ -259,6 +263,9 @@ psql_completion(char *text, int start, int end) "cpu_index_tuple_cost", "cpu_operator_cost", "geqo_selection_bias", + + "default_transaction_isolation", + NULL }; diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index be1fbdd4ef..d1c8ca7598 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: miscadmin.h,v 1.90 2001/09/08 15:24:00 petere Exp $ + * $Id: miscadmin.h,v 1.91 2001/09/21 03:32:36 tgl Exp $ * * NOTES * some of the information in this file should be moved to @@ -170,6 +170,7 @@ extern char DateFormat[]; extern bool enableFsync; extern bool allowSystemTableMods; extern int SortMem; +extern int VacuumMem; /* * A few postmaster startup options are exported here so the -- GitLab