From 1021bd6a89bc756c2a72b29eeee1a7a5c25f64f5 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 3 Oct 2014 13:01:27 -0300 Subject: Don't balance vacuum cost delay when per-table settings are in effect When there are cost-delay-related storage options set for a table, trying to make that table participate in the autovacuum cost-limit balancing algorithm produces undesirable results: instead of using the configured values, the global values are always used, as illustrated by Mark Kirkwood in http://www.postgresql.org/message-id/52FACF15.8020507@catalyst.net.nz Since the mechanism is already complicated, just disable it for those cases rather than trying to make it cope. There are undesirable side-effects from this too, namely that the total I/O impact on the system will be higher whenever such tables are vacuumed. However, this is seen as less harmful than slowing down vacuum, because that would cause bloat to accumulate. Anyway, in the new system it is possible to tweak options to get the precise behavior one wants, whereas with the previous system one was simply hosed. This has been broken forever, so backpatch to all supported branches. This might affect systems where cost_limit and cost_delay have been set for individual tables. --- doc/src/sgml/maintenance.sgml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index d692308cf49..8764e0091ac 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -792,10 +792,13 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu - When multiple workers are running, the cost limit is + When multiple workers are running, the cost delay parameters are balanced among all the running workers, so that the - total impact on the system is the same, regardless of the number - of workers actually running. + total I/O impact on the system is the same regardless of the number + of workers actually running. However, any workers processing tables whose + autovacuum_vacuum_cost_delay or + autovacuum_vacuum_cost_limit have been set are not considered + in the balancing algorithm. -- cgit v1.2.3