Magnus was just talking to me about having a better way of controlling memory usage on autovacuum. Instead of each worker using up to maintenance_work_mem, which ends up as a disaster when DBA A sets to a large value and DBA B raises autovacuum_max_workers, we could simply have an "autovacuum_maintenance_memory" setting (name TBD), that defines the maximum amount of memory that autovacuum is going to use regardless of the number of workers.
So for the initial implementation, we could just have each worker set its local maintenance_work_mem to autovacuum_maintenance_memory / max_workers. That way there's never excessive memory usage. This implementation is not ideal, because most of the time they wouldn't use that much memory, and so vacuums could be slower. But I think it's better than what we currently have. Thoughts? (A future implementation could improve things by using something like the balancing code we have for cost_delay. But I don't want to go there now.) -- Álvaro Herrera <alvhe...@alvh.no-ip.org> -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers