Re: Berserk Autovacuum (let's save next Mandrill)
Masahiko Sawada <masahiko.sawada@2ndquadrant.com>
From: Masahiko Sawada <masahiko.sawada@2ndquadrant.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Laurenz Albe <laurenz.albe@cybertec.at>, Justin Pryzby <pryzby@telsasoft.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, Amit Kapila <amit.kapila16@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Darafei Komяpa Praliaskouski <me@komzpa.net>, Andres Freund <andres@anarazel.de>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>, Alvaro Herrera <alvherre@2ndquadrant.com>, Michael Banck <mbanck@gmx.net>
Date: 2020-03-12T12:43:17Z
Lists: pgsql-hackers
On Thu, 12 Mar 2020 at 16:28, David Rowley <dgrowleyml@gmail.com> wrote: > > On Thu, 12 Mar 2020 at 19:50, Masahiko Sawada > <masahiko.sawada@2ndquadrant.com> wrote: > > The reason why you want to add new GUC parameters is to use different > > default values for insert-update table case and insert-only table > > case? > > Yes, but in particular so it can be completely disabled easily. > > > I think I understand the pros and cons of adding separate > > parameters, but I still cannot understand use cases where we cannot > > handle without separate parameters. > > That's a lot of negatives. I think I understand that you don't feel > that additional GUCs are worth it? > > Laurenz highlighted a seemingly very valid reason that the current > GUCs cannot be reused. Namely, say the table has 1 billion rows, if we > use the current scale factor of 0.2, then we'll run an insert-only > vacuum every 200 million rows. If those INSERTs are one per > transaction then the new feature does nothing as the wraparound vacuum > will run instead. Since this feature was born due to large insert-only > tables, this concern seems very valid to me. Yeah, I understand and agree that since most people would use default values we can reduce mis-configuration cases by adding separate GUCs that have appropriate default values for that purpose but on the other hand I'm not sure it's worth that we cover the large insert-only table case by adding separate GUCs in spite of being able to cover it even by existing two GUCs. If we want to disable this feature on the particular table, we can have a storage parameter that means not to consider the number of inserted tuples rather than having multiple GUCs that allows us to fine tuning. And IIUC even in the above case, I think that if we trigger insert-only vacuum by comparing the number of inserted tuples to the threshold computed by existing threshold and scale factor, we can cover it. But since you and Laurenz already agreed to adding two GUCs I'm not going to insist on that. Regards, -- Masahiko Sawada http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Further improve stability fix for partition_aggregate test.
- 18d85e9b8a2b 13.0 landed
-
Improve stability fix for partition_aggregate test.
- 7cb0a423f914 13.0 landed
-
Attempt to stabilize partitionwise_aggregate test
- cefb82d49e21 13.0 landed
-
Fix race condition in statext_store().
- fe3036527a1f 13.0 landed
- 6c426cd43790 12.3 landed
-
Attempt to fix unstable regression tests, take 2
- 24566b359d09 13.0 landed
-
Attempt to fix unstable regression tests
- 2dc16efedc76 13.0 landed
-
Trigger autovacuum based on number of INSERTs
- b07642dbcd8d 13.0 landed
-
Fix upper limit for vacuum_cleanup_index_scale_factor
- 4d54543efa5e 11.0 cited