Re: B-tree parent pointer and checkpoints

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: B-tree parent pointer and checkpoints
Дата
Msg-id CA+TgmoZdV6K2hdJT7ikBN=XLhe=t0Sfuugq7U=7=6OcD4XZp-w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: B-tree parent pointer and checkpoints  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Ответы Re: B-tree parent pointer and checkpoints
Re: B-tree parent pointer and checkpoints
Список pgsql-hackers
On Tue, Sep 6, 2011 at 9:45 AM, Heikki Linnakangas
<heikki.linnakangas@enterprisedb.com> wrote:
>> Do you really need to hold the page locks for all that time, or could
>> you cheat?  Like... release the locks on the split pages but then go
>> back and reacquire them to clear the flag...
>
> Hmm, there's two issues with that:
>
> 1. While you're not holding the locks on the child pages, someone can step
> onto the page and see that the MISSING_DOWNLINK flag is set, and try to
> finish the split for you.
>
> 2. If you don't hold the page locked while you clear the flag, someone can
> start and finish a checkpoint after you've inserted the downlink, and before
> you've cleared the flag. You end up in a scenario where the flag is set, but
> the page in fact *does* have a downlink in the parent.

It seems like both of these could be handled by making the code that
repairs the damage insert the downlink into the parent only if it's
not already present.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: spinlocks on HP-UX
Следующее
От: Devrim GÜNDÜZ
Дата:
Сообщение: Alpha 1 for 9.2