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.
This commit is contained in:
Tom Lane 2009-02-28 00:10:52 +00:00
parent 07b9936a0f
commit 640796ff41
6 changed files with 61 additions and 53 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.210 2009/02/24 12:09:08 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.211 2009/02/28 00:10:50 tgl Exp $ -->
<chapter Id="runtime-config"> <chapter Id="runtime-config">
<title>Server Configuration</title> <title>Server Configuration</title>
@ -1010,7 +1010,8 @@ SET ENABLE_SEQSCAN TO OFF;
</para> </para>
<para> <para>
This feature is disabled by default. To enable it, set the This feature is disabled by default for manually issued
<command>VACUUM</command> commands. To enable it, set the
<varname>vacuum_cost_delay</varname> variable to a nonzero <varname>vacuum_cost_delay</varname> variable to a nonzero
value. value.
</para> </para>
@ -1033,6 +1034,13 @@ SET ENABLE_SEQSCAN TO OFF;
not a multiple of 10 might have the same results as setting it not a multiple of 10 might have the same results as setting it
to the next higher multiple of 10. to the next higher multiple of 10.
</para> </para>
<para>
When using cost-based vacuuming, appropriate values for
<varname>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.
</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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", "Vacuum cost delay in milliseconds, for autovacuum",
RELOPT_KIND_HEAP RELOPT_KIND_HEAP
}, },
20, 0, 1000 20, 0, 100
}, },
{ {
{ {

View File

@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>. * Written by Peter Eisentraut <peter_e@gmx.net>.
* *
* IDENTIFICATION * 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 GUC_UNIT_MS
}, },
&VacuumCostDelay, &VacuumCostDelay,
0, 0, 1000, NULL, NULL 0, 0, 100, NULL, NULL
}, },
{ {
@ -1477,7 +1477,7 @@ static struct config_int ConfigureNamesInt[] =
GUC_UNIT_MS GUC_UNIT_MS
}, },
&autovacuum_vac_cost_delay, &autovacuum_vac_cost_delay,
20, -1, 1000, NULL, NULL 20, -1, 100, NULL, NULL
}, },
{ {

View File

@ -119,7 +119,7 @@
# - Cost-Based Vacuum Delay - # - 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_hit = 1 # 0-10000 credits
#vacuum_cost_page_miss = 10 # 0-10000 credits #vacuum_cost_page_miss = 10 # 0-10000 credits
#vacuum_cost_page_dirty = 20 # 0-10000 credits #vacuum_cost_page_dirty = 20 # 0-10000 credits

View File

@ -7,12 +7,12 @@ SHOW datestyle;
(1 row) (1 row)
-- SET to some nondefault value -- SET to some nondefault value
SET vacuum_cost_delay TO 400; SET vacuum_cost_delay TO 40;
SET datestyle = 'ISO, YMD'; SET datestyle = 'ISO, YMD';
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -28,11 +28,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
-- SET LOCAL has no effect outside of a transaction -- 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; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SET LOCAL datestyle = 'SQL'; SET LOCAL datestyle = 'SQL';
@ -50,11 +50,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET LOCAL within a transaction that commits -- SET LOCAL within a transaction that commits
BEGIN; BEGIN;
SET LOCAL vacuum_cost_delay TO 500; SET LOCAL vacuum_cost_delay TO 50;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
500ms 50ms
(1 row) (1 row)
SET LOCAL datestyle = 'SQL'; SET LOCAL datestyle = 'SQL';
@ -74,7 +74,7 @@ COMMIT;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -91,11 +91,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET should be reverted after ROLLBACK -- SET should be reverted after ROLLBACK
BEGIN; BEGIN;
SET vacuum_cost_delay TO 600; SET vacuum_cost_delay TO 60;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
600ms 60ms
(1 row) (1 row)
SET datestyle = 'German'; SET datestyle = 'German';
@ -115,7 +115,7 @@ ROLLBACK;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -132,7 +132,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- Some tests with subtransactions -- Some tests with subtransactions
BEGIN; BEGIN;
SET vacuum_cost_delay TO 700; SET vacuum_cost_delay TO 70;
SET datestyle = 'MDY'; SET datestyle = 'MDY';
SHOW datestyle; SHOW datestyle;
DateStyle DateStyle
@ -147,11 +147,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
SAVEPOINT first_sp; SAVEPOINT first_sp;
SET vacuum_cost_delay TO 800; SET vacuum_cost_delay TO 80;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
800ms 80ms
(1 row) (1 row)
SET datestyle = 'German, DMY'; SET datestyle = 'German, DMY';
@ -181,7 +181,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
SAVEPOINT second_sp; SAVEPOINT second_sp;
SET vacuum_cost_delay TO 900; SET vacuum_cost_delay TO 90;
SET datestyle = 'SQL, YMD'; SET datestyle = 'SQL, YMD';
SHOW datestyle; SHOW datestyle;
DateStyle DateStyle
@ -196,11 +196,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
SAVEPOINT third_sp; SAVEPOINT third_sp;
SET vacuum_cost_delay TO 1000; SET vacuum_cost_delay TO 100;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
1s 100ms
(1 row) (1 row)
SET datestyle = 'Postgres, MDY'; SET datestyle = 'Postgres, MDY';
@ -220,7 +220,7 @@ ROLLBACK TO third_sp;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
900ms 90ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -239,7 +239,7 @@ ROLLBACK TO second_sp;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
700ms 70ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -258,7 +258,7 @@ ROLLBACK;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -278,7 +278,7 @@ BEGIN;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -294,11 +294,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
SAVEPOINT sp; SAVEPOINT sp;
SET LOCAL vacuum_cost_delay TO 300; SET LOCAL vacuum_cost_delay TO 30;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
300ms 30ms
(1 row) (1 row)
SET LOCAL datestyle = 'Postgres, MDY'; SET LOCAL datestyle = 'Postgres, MDY';
@ -318,7 +318,7 @@ ROLLBACK TO sp;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -337,7 +337,7 @@ ROLLBACK;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -357,7 +357,7 @@ BEGIN;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -373,11 +373,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
(1 row) (1 row)
SAVEPOINT sp; SAVEPOINT sp;
SET LOCAL vacuum_cost_delay TO 300; SET LOCAL vacuum_cost_delay TO 30;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
300ms 30ms
(1 row) (1 row)
SET LOCAL datestyle = 'Postgres, MDY'; SET LOCAL datestyle = 'Postgres, MDY';
@ -397,7 +397,7 @@ RELEASE SAVEPOINT sp;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
300ms 30ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -416,7 +416,7 @@ ROLLBACK;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;
@ -433,12 +433,12 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET followed by SET LOCAL -- SET followed by SET LOCAL
BEGIN; BEGIN;
SET vacuum_cost_delay TO 400; SET vacuum_cost_delay TO 40;
SET LOCAL vacuum_cost_delay TO 500; SET LOCAL vacuum_cost_delay TO 50;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
500ms 50ms
(1 row) (1 row)
SET datestyle = 'ISO, DMY'; SET datestyle = 'ISO, DMY';
@ -459,7 +459,7 @@ COMMIT;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
vacuum_cost_delay vacuum_cost_delay
------------------- -------------------
400ms 40ms
(1 row) (1 row)
SHOW datestyle; SHOW datestyle;

View File

@ -3,14 +3,14 @@
SHOW datestyle; SHOW datestyle;
-- SET to some nondefault value -- SET to some nondefault value
SET vacuum_cost_delay TO 400; SET vacuum_cost_delay TO 40;
SET datestyle = 'ISO, YMD'; SET datestyle = 'ISO, YMD';
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET LOCAL has no effect outside of a transaction -- 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; SHOW vacuum_cost_delay;
SET LOCAL datestyle = 'SQL'; SET LOCAL datestyle = 'SQL';
SHOW datestyle; SHOW datestyle;
@ -18,7 +18,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET LOCAL within a transaction that commits -- SET LOCAL within a transaction that commits
BEGIN; BEGIN;
SET LOCAL vacuum_cost_delay TO 500; SET LOCAL vacuum_cost_delay TO 50;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET LOCAL datestyle = 'SQL'; SET LOCAL datestyle = 'SQL';
SHOW datestyle; SHOW datestyle;
@ -30,7 +30,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET should be reverted after ROLLBACK -- SET should be reverted after ROLLBACK
BEGIN; BEGIN;
SET vacuum_cost_delay TO 600; SET vacuum_cost_delay TO 60;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET datestyle = 'German'; SET datestyle = 'German';
SHOW datestyle; SHOW datestyle;
@ -42,12 +42,12 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- Some tests with subtransactions -- Some tests with subtransactions
BEGIN; BEGIN;
SET vacuum_cost_delay TO 700; SET vacuum_cost_delay TO 70;
SET datestyle = 'MDY'; SET datestyle = 'MDY';
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
SAVEPOINT first_sp; SAVEPOINT first_sp;
SET vacuum_cost_delay TO 800; SET vacuum_cost_delay TO 80;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET datestyle = 'German, DMY'; SET datestyle = 'German, DMY';
SHOW datestyle; SHOW datestyle;
@ -56,12 +56,12 @@ ROLLBACK TO first_sp;
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
SAVEPOINT second_sp; SAVEPOINT second_sp;
SET vacuum_cost_delay TO 900; SET vacuum_cost_delay TO 90;
SET datestyle = 'SQL, YMD'; SET datestyle = 'SQL, YMD';
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
SAVEPOINT third_sp; SAVEPOINT third_sp;
SET vacuum_cost_delay TO 1000; SET vacuum_cost_delay TO 100;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET datestyle = 'Postgres, MDY'; SET datestyle = 'Postgres, MDY';
SHOW datestyle; SHOW datestyle;
@ -85,7 +85,7 @@ SHOW vacuum_cost_delay;
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
SAVEPOINT sp; SAVEPOINT sp;
SET LOCAL vacuum_cost_delay TO 300; SET LOCAL vacuum_cost_delay TO 30;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET LOCAL datestyle = 'Postgres, MDY'; SET LOCAL datestyle = 'Postgres, MDY';
SHOW datestyle; SHOW datestyle;
@ -105,7 +105,7 @@ SHOW vacuum_cost_delay;
SHOW datestyle; SHOW datestyle;
SELECT '2006-08-13 12:34:56'::timestamptz; SELECT '2006-08-13 12:34:56'::timestamptz;
SAVEPOINT sp; SAVEPOINT sp;
SET LOCAL vacuum_cost_delay TO 300; SET LOCAL vacuum_cost_delay TO 30;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET LOCAL datestyle = 'Postgres, MDY'; SET LOCAL datestyle = 'Postgres, MDY';
SHOW datestyle; SHOW datestyle;
@ -121,8 +121,8 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- SET followed by SET LOCAL -- SET followed by SET LOCAL
BEGIN; BEGIN;
SET vacuum_cost_delay TO 400; SET vacuum_cost_delay TO 40;
SET LOCAL vacuum_cost_delay TO 500; SET LOCAL vacuum_cost_delay TO 50;
SHOW vacuum_cost_delay; SHOW vacuum_cost_delay;
SET datestyle = 'ISO, DMY'; SET datestyle = 'ISO, DMY';
SET LOCAL datestyle = 'Postgres, MDY'; SET LOCAL datestyle = 'Postgres, MDY';