Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated)
От | Amit Kapila |
---|---|
Тема | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) |
Дата | |
Msg-id | CAA4eK1LHH-ijqMKMACFuHu2JB9AGjyKkKtTQMndet0JEgdtoyw@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 Mon, May 4, 2015 at 12:42 PM, Thomas Munro <thomas.munro@enterprisedb.com> wrote: > > On Mon, May 4, 2015 at 6:25 PM, Amit Kapila <amit.kapila16@gmail.com> wrote: > > [...] > > One more thing, I think the current calculation considers members > > usage, shouldn't we try to consider offset usage as well? > > Offsets are indexed by multixact ID: > > #define MultiXactIdToOffsetPage(xid) \ > ((xid) / (MultiXactOffset) MULTIXACT_OFFSETS_PER_PAGE) > #define MultiXactIdToOffsetEntry(xid) \ > ((xid) % (MultiXactOffset) MULTIXACT_OFFSETS_PER_PAGE) > > The existing multixact wraparound prevention code is already managing > the 32 bit multixact ID space. The problem with members comes about > because each one of those multixact IDs can have arbitrary numbers of > members, and yet the members are also addressed with a 32 bit index. > So we are trying to hijack the multixact ID wraparound prevention and > make it more aggressive if member space appears to be running out. > (Perhaps in future there should be a 64 bit index for member indexes > so that this problem disappears?) > Okay, that makes sense. > >> (whereas when we used a scaled down > >> autovaccum_multixact_freeze_max_age, we usually didn't select any > >> tables at all until we scaled it down a lot, ie until we got close to > >> dangerous_member_count). Finally, I wanted a special value like -1 > >> for 'none' so that table_recheck_autovac and ExecVacuum could use a > >> simple test >= 0 to know that they also need to set > >> multixact_freeze_min_age to zero in the case of a > >> member-space-triggered vacuum, so that we get maximum benefit from our > >> table scans by freezing all relevant tuples, not just some older ones > >> > > > > I think setting multixact_freeze_min_age to zero could be too aggresive > > for I/O. Yes with this you can get maximum benefit, but at cost of > > increased I/O. How would you justify setting it to zero as appropriate > > w.r.t increased I/O? > > I assumed that if you were already vacuuming all your tablesto avoid > running out of member space, I think here you mean all tables that has relminmxid lesser than the newly computed age (compute_max_multixact_age_to_avoid_member_wrap) > you would want to freeze any tuples you > possibly could to defer the next wraparound scan for as long as > possible, since wraparound scans are enormously expensive. > The point is valid to an extent, but If we go by this logic, then currently also we should set multixact_freeze_min_age as zero for wraparound vacuum. With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
В списке pgsql-bugs по дате отправления: