From 640796ff4122c01ab96780cbbee88479c3694907 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 28 Feb 2009 00:10:52 +0000 Subject: [PATCH] Reduce the maximum value of vacuum_cost_delay and autovacuum_vacuum_cost_delay to 100ms (from 1000). This still seems to be comfortably larger than the useful range of the parameter, and it should help discourage people from picking uselessly large values. Tweak the documentation to recommend small values, too. Per discussion of a couple weeks ago. --- doc/src/sgml/config.sgml | 12 +++- src/backend/access/common/reloptions.c | 4 +- src/backend/utils/misc/guc.c | 6 +- src/backend/utils/misc/postgresql.conf.sample | 2 +- src/test/regress/expected/guc.out | 66 +++++++++---------- src/test/regress/sql/guc.sql | 24 +++---- 6 files changed, 61 insertions(+), 53 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index b3b65f5f0d..5545038915 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ - + Server Configuration @@ -1010,7 +1010,8 @@ SET ENABLE_SEQSCAN TO OFF; - This feature is disabled by default. To enable it, set the + This feature is disabled by default for manually issued + VACUUM commands. To enable it, set the vacuum_cost_delay variable to a nonzero value. @@ -1033,6 +1034,13 @@ SET ENABLE_SEQSCAN TO OFF; not a multiple of 10 might have the same results as setting it to the next higher multiple of 10. + + + When using cost-based vacuuming, appropriate values for + vacuum_cost_delay are usually quite small, perhaps + 10 or 20 milliseconds. Adjusting vacuum's resource consumption + is best done by changing the other vacuum cost parameters. + diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 548c0b00de..0060be6a02 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.21 2009/02/09 20:57:59 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.22 2009/02/28 00:10:51 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -116,7 +116,7 @@ static relopt_int intRelOpts[] = "Vacuum cost delay in milliseconds, for autovacuum", RELOPT_KIND_HEAP }, - 20, 0, 1000 + 20, 0, 100 }, { { diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 40b087a8f3..5411840b2a 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.495 2009/01/21 09:28:26 mha Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.496 2009/02/28 00:10:51 tgl Exp $ * *-------------------------------------------------------------------- */ @@ -1467,7 +1467,7 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_MS }, &VacuumCostDelay, - 0, 0, 1000, NULL, NULL + 0, 0, 100, NULL, NULL }, { @@ -1477,7 +1477,7 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_MS }, &autovacuum_vac_cost_delay, - 20, -1, 1000, NULL, NULL + 20, -1, 100, NULL, NULL }, { diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index a874b4541d..f3aaf818ad 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -119,7 +119,7 @@ # - Cost-Based Vacuum Delay - -#vacuum_cost_delay = 0 # 0-1000 milliseconds +#vacuum_cost_delay = 0 # 0-100 milliseconds #vacuum_cost_page_hit = 1 # 0-10000 credits #vacuum_cost_page_miss = 10 # 0-10000 credits #vacuum_cost_page_dirty = 20 # 0-10000 credits diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out index 2e6056b376..a580daa089 100644 --- a/src/test/regress/expected/guc.out +++ b/src/test/regress/expected/guc.out @@ -7,12 +7,12 @@ SHOW datestyle; (1 row) -- SET to some nondefault value -SET vacuum_cost_delay TO 400; +SET vacuum_cost_delay TO 40; SET datestyle = 'ISO, YMD'; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -28,11 +28,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) -- SET LOCAL has no effect outside of a transaction -SET LOCAL vacuum_cost_delay TO 500; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SET LOCAL datestyle = 'SQL'; @@ -50,11 +50,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL within a transaction that commits BEGIN; -SET LOCAL vacuum_cost_delay TO 500; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 500ms + 50ms (1 row) SET LOCAL datestyle = 'SQL'; @@ -74,7 +74,7 @@ COMMIT; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -91,11 +91,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET should be reverted after ROLLBACK BEGIN; -SET vacuum_cost_delay TO 600; +SET vacuum_cost_delay TO 60; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 600ms + 60ms (1 row) SET datestyle = 'German'; @@ -115,7 +115,7 @@ ROLLBACK; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -132,7 +132,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- Some tests with subtransactions BEGIN; -SET vacuum_cost_delay TO 700; +SET vacuum_cost_delay TO 70; SET datestyle = 'MDY'; SHOW datestyle; DateStyle @@ -147,11 +147,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) SAVEPOINT first_sp; -SET vacuum_cost_delay TO 800; +SET vacuum_cost_delay TO 80; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 800ms + 80ms (1 row) SET datestyle = 'German, DMY'; @@ -181,7 +181,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) SAVEPOINT second_sp; -SET vacuum_cost_delay TO 900; +SET vacuum_cost_delay TO 90; SET datestyle = 'SQL, YMD'; SHOW datestyle; DateStyle @@ -196,11 +196,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) SAVEPOINT third_sp; -SET vacuum_cost_delay TO 1000; +SET vacuum_cost_delay TO 100; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 1s + 100ms (1 row) SET datestyle = 'Postgres, MDY'; @@ -220,7 +220,7 @@ ROLLBACK TO third_sp; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 900ms + 90ms (1 row) SHOW datestyle; @@ -239,7 +239,7 @@ ROLLBACK TO second_sp; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 700ms + 70ms (1 row) SHOW datestyle; @@ -258,7 +258,7 @@ ROLLBACK; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -278,7 +278,7 @@ BEGIN; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -294,11 +294,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) SAVEPOINT sp; -SET LOCAL vacuum_cost_delay TO 300; +SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 300ms + 30ms (1 row) SET LOCAL datestyle = 'Postgres, MDY'; @@ -318,7 +318,7 @@ ROLLBACK TO sp; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -337,7 +337,7 @@ ROLLBACK; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -357,7 +357,7 @@ BEGIN; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -373,11 +373,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz; (1 row) SAVEPOINT sp; -SET LOCAL vacuum_cost_delay TO 300; +SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 300ms + 30ms (1 row) SET LOCAL datestyle = 'Postgres, MDY'; @@ -397,7 +397,7 @@ RELEASE SAVEPOINT sp; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 300ms + 30ms (1 row) SHOW datestyle; @@ -416,7 +416,7 @@ ROLLBACK; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; @@ -433,12 +433,12 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET followed by SET LOCAL BEGIN; -SET vacuum_cost_delay TO 400; -SET LOCAL vacuum_cost_delay TO 500; +SET vacuum_cost_delay TO 40; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 500ms + 50ms (1 row) SET datestyle = 'ISO, DMY'; @@ -459,7 +459,7 @@ COMMIT; SHOW vacuum_cost_delay; vacuum_cost_delay ------------------- - 400ms + 40ms (1 row) SHOW datestyle; diff --git a/src/test/regress/sql/guc.sql b/src/test/regress/sql/guc.sql index e03bc20595..9966606275 100644 --- a/src/test/regress/sql/guc.sql +++ b/src/test/regress/sql/guc.sql @@ -3,14 +3,14 @@ SHOW datestyle; -- SET to some nondefault value -SET vacuum_cost_delay TO 400; +SET vacuum_cost_delay TO 40; SET datestyle = 'ISO, YMD'; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL has no effect outside of a transaction -SET LOCAL vacuum_cost_delay TO 500; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'SQL'; SHOW datestyle; @@ -18,7 +18,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL within a transaction that commits BEGIN; -SET LOCAL vacuum_cost_delay TO 500; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'SQL'; SHOW datestyle; @@ -30,7 +30,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET should be reverted after ROLLBACK BEGIN; -SET vacuum_cost_delay TO 600; +SET vacuum_cost_delay TO 60; SHOW vacuum_cost_delay; SET datestyle = 'German'; SHOW datestyle; @@ -42,12 +42,12 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- Some tests with subtransactions BEGIN; -SET vacuum_cost_delay TO 700; +SET vacuum_cost_delay TO 70; SET datestyle = 'MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT first_sp; -SET vacuum_cost_delay TO 800; +SET vacuum_cost_delay TO 80; SHOW vacuum_cost_delay; SET datestyle = 'German, DMY'; SHOW datestyle; @@ -56,12 +56,12 @@ ROLLBACK TO first_sp; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT second_sp; -SET vacuum_cost_delay TO 900; +SET vacuum_cost_delay TO 90; SET datestyle = 'SQL, YMD'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT third_sp; -SET vacuum_cost_delay TO 1000; +SET vacuum_cost_delay TO 100; SHOW vacuum_cost_delay; SET datestyle = 'Postgres, MDY'; SHOW datestyle; @@ -85,7 +85,7 @@ SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT sp; -SET LOCAL vacuum_cost_delay TO 300; +SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'Postgres, MDY'; SHOW datestyle; @@ -105,7 +105,7 @@ SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT sp; -SET LOCAL vacuum_cost_delay TO 300; +SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'Postgres, MDY'; SHOW datestyle; @@ -121,8 +121,8 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- SET followed by SET LOCAL BEGIN; -SET vacuum_cost_delay TO 400; -SET LOCAL vacuum_cost_delay TO 500; +SET vacuum_cost_delay TO 40; +SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET datestyle = 'ISO, DMY'; SET LOCAL datestyle = 'Postgres, MDY';