Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated)
От | Robert Haas |
---|---|
Тема | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) |
Дата | |
Msg-id | CA+TgmoZM-akQB5ycB8KyVWj4Jsc-e7c00Wb3w6EMipvFEhVqTg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) (Thomas Munro <thomas.munro@enterprisedb.com>) |
Список | pgsql-bugs |
On Sat, May 2, 2015 at 2:16 AM, Thomas Munro <thomas.munro@enterprisedb.com> wrote: > Here's a new version which sets up the multixact parameters in > ExecVacuum for regular VACUUM commands just like it does for > autovacuum if needed. When computing > max_multixact_age_to_avoid_member_wrap for a manual vacuum, it uses > lower constants, so that any manually scheduled vacuums get a chance > to deal with some of this problem before autovacuum has to. Here are > the arbitrary constants currently used: at 50% member address space > usage, autovacuum starts wraparound scan of tables with the oldest > active multixacts, and then younger ones as the usage increases, until > at 75% usage it vacuums with multixact_freeze_table_age = 0; for > manual VACUUM those numbers are halved so that it has a good head > start. I think the 75% threshold for reducing multxact_freeze_table_age to zero is fine, but I don't agree with the 50% cutoff. The purpose of autovacuum_multixact_freeze_max_age is to control the fraction of the 2^32-entry offset space that can be consumed before we begin viewing the problem as urgent. We have a setting for that because it needs to be tunable, and the default value for that setting is 400 million, which is roughly 10% of the members space. That is a whole lot lower than the 50% threshold you are proposing here. Moreover, it leaves the user with no meaningful choice: if the 50% threshold consumes too much disk space, or doesn't leave enough room before we hit the wall, then the user is simply hosed. This is why I initially proposed that the member-space-consumption-percentage at which we start derating multixact_freeze_table_age should be based on autovacuum_multixact_freeze_max_age/2^32. That way, autovacuum_multixact_freeze_max_age controls not only how aggressively we try to reclaim offset space but also how aggressively we try to reclaim member space. The user can then tune the value, and the default is the same in both cases. I also think that halving the numbers for manual vacuums is arbitrary and unprecedented. The thought process isn't bad, but an autovacuum currently behaves in most respects like a manual vacuum, and I'm reluctant to make those more different. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-bugs по дате отправления: