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 | D8A99261-9E17-436B-B08C-BDCDBB07239D@gmail.com обсуждение исходный текст |
Ответ на | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) (Thomas Munro <thomas.munro@enterprisedb.com>) |
Ответы |
Re: Re: BUG #12990: Missing pg_multixact/members files
(appears to have wrapped, then truncated)
|
Список | pgsql-bugs |
On May 7, 2015, at 6:21 PM, Thomas Munro <thomas.munro@enterprisedb.com> wro= te: > I may have the details wrong there, but in general I can't see how you > can delete just the right segment files while the head and tail > pointers of this circular buffer are both moving, unless you hold the > lock to stop that while you make the decision and unlink the file > (which I assume is out of the question), or say 'well if we keep the > head and tail pointers at least 20 pages apart, that's unlikely to > happen' (which I assume is also out of the question). =20 That is exactly the sort of thing I was worried about, but I couldn't put my= finger on it. I think your analysis is right. > Now I > understand the suggestion that the checkpoint code could be in charge > of advancing the oldest multixact + offset. Yeah. I think we need to pursue that angle unless somebody has a better idea= . It would also address another issue I am concerned about: the current sys= tem seems to advance the oldest multixact information in shared memory diffe= rently on the primary and the standby. I'm not sure the logic actually works= on the standby at all at this point, but even if it does, it seems unlikely= be right to rely on redo to do on the standby what is being done by a compl= etely different, not-WAL-logged operation on the master. Making the checkpo= int do it in both cases would fix that. > But if we did that, our new autovacuum code would get confused and > keep trying to vacuum stuff that it's already dealt with, until the > next checkpoint... so maybe we'd need to track both (1) the offset of > the oldest multixact: the one that we use to trigger autovacuums, even > though there might be even older segments still on disk, and (2) > offset_of_start_of_oldest_segment_on_disk (suitably compressed): the > one that we use to block wraparound in GetNewMultiXactId, so that we > never write into a file that checkpoint might decide to delete. That sounds plausible. ...Robert=
В списке pgsql-bugs по дате отправления: